请C语言高手帮忙分析一下下面这个程序,为什么我算出来是1,2,3 而答案是1,3,2呢 求详解啊

voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y... 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);
}
展开
 我来答
蓝色和清风
2012-09-19 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:118万
展开全部
f 函数是按值传递的 函数内部交换不影响外部的变量 所以还是1 3 2
woqianyuning
2012-09-19 · 超过16用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:39.3万
展开全部
全部正解,可以解引用
void f(int &v, int &w) 这样就好了

其实也不必这么麻烦
直接 max = a > b ? a : b;
min = a < b ? a : b
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dabenger
2012-09-19 · TA获得超过214个赞
知道小有建树答主
回答量:369
采纳率:78%
帮助的人:226万
展开全部
void f(int v , int w)这个函数不会改变传入参数的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
借势顺盛
2012-09-20
知道答主
回答量:55
采纳率:0%
帮助的人:23万
展开全部
调用f()函数

把x的值传递给f()函数里的形参v,
把y的值传递给f()函数的形参w
形参的值改变不影响调用函数的参数,即x,y的值

f()没有返回值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-19
展开全部
那个f函数只能换变量,而你使用该函数是给点主体x=1,y=2即那函数是f(1,3)不能改变想x,y的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-19
展开全部
你使用的参数不是指针或引用,在你的那个方法中改的是形参而非实参所以结果没变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenruihz
2012-09-19
知道答主
回答量:1
采纳率:0%
帮助的人:1685
展开全部
因为f函数中的形参是值传递,而不是地址传递,所以x,y,z的值都不会改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式