void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y); } main() {int x=2,y=3; fun(x,y)

void fun(int x,int y)

{x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);
}

main()

{int x=2,y=3;

fun(x,y);
printf("%d,%d\n",x,y);
}
这里的知识我真的不懂,能不能详细地说说~~谢谢谢谢

main是主函数,所以程序先从main函数执行。

main函数中,调用fun(x,y);x,y是形参,值分别为2,3.
转入执行fun()函数,x,y被重新赋值了,x=2+3=5,y=5-3=2,x=5-2=3
接着输出xy的值,所以为3,2。因为x,y不是地址传递,所以在main函数中的x,y没有变化
所以main函数中输出的值为:2,3

综上所述,结果为:3,2,2,3
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-29
结果为:3,2,2,3

void fun(int x,int y)// 由于这里传入参数不是指针,引用,所以这里x,y只是main函数中x,y值的一个拷贝,所以修改后不会对main中x,y的值有影响。

{x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);
} // 这里输出:3,2,

main()

{
int x=2,y=3;
fun(x,y);/

printf("%d,%d\n",x,y);// 这里原样输出x,y的值:输出:2,3

}本回答被网友采纳
第2个回答  2012-06-30
楼上的哥们,看清楚,主函数只有一个,你哪来的输出两次,fun函数起到的作用只是将X,Y交换次序而已,结果只有3 2
既然这位同学是问的编程方面的,我建议你最好严谨点,发问的同学,结果没有逗号追问

答案确实是两次3,2,2,3

void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y...
转入执行fun()函数,x,y被重新赋值了,x=2+3=5,y=5-3=2,x=5-2=3 接着输出xy的值,所以为3,2。因为x,y不是地址传递,所以在main函数中的x,y没有变化 所以main函数中输出的值为:2,3 综上所述,结果为:3,2,2,3

void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y...
void fun(int x,int y)\/\/ 由于这里传入参数不是指针,引用,所以这里x,y只是main函数中x,y值的一个拷贝,所以修改后不会对main中x,y的值有影响。{x=x+y;y=x-y;x=x-y;printf("%d,%d,",x,y);} \/\/ 这里输出:3,2,main(){ int x=2,y=3;fun(x,y);\/ printf("%d,%d\\n"...

c语言下列程序执行结果int a=7, b=3;
下列程序的执行结果是( D)。 #include int a=7, b=3; void fun (int x, int y) { x=x-y; y=x+y; } main ( ) { int a=8, b=6; fun(a,b); printf ("%d,%d", a,b); } A. 4, 7B. 7,3C. 2,6D. 8,6 答案选D,原因是:1、首先程序开头定义的a=7,b=3属于...

全国计算机等级考试三级笔试试题及答案?
float fun(int x,int y){ return(x+y); }main(){ int a=2,b=5,c=8;printf(“%3.0f\\n”,fun(int)fun(a+c,b),a-c));}程序运行后的输出结果是( )。A) 编译出错 B) 9 C) 21 D) 9.0(30) 有以下程序void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d)...

fun(int x,int y,int z){z=x*x+y*y;}main(){int a=31;fun(5,2,a);p...
。c++可以通过引用,也就是别名来改变, 比如把函数定义成 void fun(int,int,int &)这样在函数里,对第三个参数做改变,相应的实参也会改变,因为它们是同一个。 这就是引用类型的作用。也可以通过指针所指来修改地址值 也就是 void fun (int ,int int * )...

...int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y=4; f...
则被调函数需要将参数声明为指针类型,调用者需向被调用的函数传递变量的地址,所以,f()中x是声明为指针类型,调用的时候也是给x传递地址,所x能修改主函数中的值,而y传的是值,自然不能,这就是值传递和地址传递的区别,建议你多看看指针那章,希望对你有帮助。

void fun() { static int x=1; int y=0; x++; y+=2; printf("%d, %dn...
x为static存储类型,只初始化一次,且生存期是整个和程序相同的,即函数推出后x的值也不改变,下次调用时继续保持的 而y是普通的auto存储类型的变量,每次调用函数时,都会被重新初始化 所以第一次调用fun()时,输出2,2,x值为2,第二次调用fun(),x自增1,输出3,2 ...

c语言考试,求答案,急!!急!!
void fun(int x,int y) { x=x+y;y=x-y;x=x-y; printf(“%d,%d,”,x,y); } main() { int x=2,y=3; fun(x,y); printf(“%d,%d\\n”,x,y); } 11、以下函数的功能是计算s=1+ + +……+ ,请填空。 double fun(int n) { double s=0.0,fac=1.0; int i; for(i=1,i<=n;...

...为int 型变量,则以下语句:x+=y;y=x-y;y=x-y;x-=y;的功能是
原题语句应该是x+=y,y=x-y;x- =y;才有意义。这样的话,执行x+=y得x=x+y 由于此时的x,故执行y=x-y得y=x 由于此时的x,y,故最后执行x-=y,得x=y。例如:x+=y等价于x=x+y,将x、y的和赋给x y=x-y=(x+y)-y=x,将原来x的值赋给y x-=y等价于x=x-y=x+y-x=y...

void fun (int x: int y) { int tmp: tmp=x; x=y; y=tmp; return; }...
1.首先,你的这个函数中的两个冒号是不对的,第一个冒号应该改成逗号,第二个冒号应该改成分号,即:void fun (int x, int y) { int tmp; tmp=x; x=y; y=tmp; return; } 2.其次,这是一个用户自定义的、交换两变量值的函数,即用tmp作为一个媒介,将形式参数x和y的值对换。3.再次...

相似回答