乌鲁木齐新天润事件:谁会c语言啊,看看这道题是不是有错?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 22:01:07
?(29) 有以下程序
??void f(int v , int w)
??{ int t;
?? t=v;v=w;w=t;
??}
??main( )
??{ int x=1,y=3,z=2;
?? if(x>y) f(x,y);
?? else if(y>z) f(y,z);
?? else f(x,z);
?? printf(“%d,%d,%d\n”,x,y,z);
??}
??执行后输出结果是c
??A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1
答案给的是c,我怎么觉得是a呢?

C 肯定是~~~~~~~~
你要注意实际参数和形式参数的区别~~~~~~~~`
实际参数向形式参数传数值的时候,形参的改变不会影响实参的
实际参数向形式参数传递地址的时候,可同过对指针的修改来改变参数!!!!!!!!!

看看书上的传地址和传值的区别就知道这题是怎么回事了

a

没错是C,因为y=3,z=2分别传值给f(int v , int w) 中的V和W,函数f交换了v和w的值,但并没有修改y和z;要想修改y和z可以的f(int v,int w)改成
f(int &v,int&w),这就是传值和引用的区别。
??

答案是C,因为那个函数没有返回值,只是调换v,w数值,而x,y并没有调换数值,所以答案是C

这段程序在VC上运行起来会有一大堆错误,哪位大师分析一下?