政府对农业扶持的作用:大伙儿,没事的帮忙看一下这个有关C语言问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 01:28:16
有以下程序
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)f9x,y)
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d\n",x,y,z);
}
执行后输出结果是
A)1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1
我觉得这个题的答案应该是A
可是参考书上的答案是C
我想了很长时间还是没想通
大伙能否帮忙解释一下这是为什么?

呵呵
到现在还没有人来
这个问题留给我的啊
第一次回答问题
如果回答的没错的话
多给点分哦

几个IF语句就不用解释了吧
满足条件的是if(y>z) f(y,z);
所以执行f(3,2)
但是

void f(int v ,int w)
{ int t;
t=v;v=w;w=t;}

这个函数虽然运行了
但因为是传值
传过之后 x y z 的值并没有改变
如果x,y,z是指针的话那就变化了
main函数中的值与f函数中的值一点关系都没有
加油!!!

选C没错,应为函数为传值调用,改变的只是临时参数,没有改变传进来的变量本身。

如果函数改为如下,则选择A
void f(int *v ,int *w)
{ int t;
t=*v;*v=*w;*w=t;}