C语言程序 为什么此程序的运行结果为 3,5,5,3??我自己分析是5,3,6,2

voidfun(intx,inty);main(){intx=5,y=3;fun(x,y);printf(“%d,%d\n”,x,y);}voidfun(intx,int... void fun (int x,int y );
main()
{
int x=5,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
void fun (int x,int y )
{
x=x+y;
y=x-y;
x=x-y;
printf(“%d,%d,”,x,y);
}
展开
 我来答
wuhouzheng
2009-04-12 · TA获得超过8561个赞
知道小有建树答主
回答量:1010
采纳率:100%
帮助的人:1267万
展开全部
void fun()功能为互换两个数,结果:3,5,
main()调用fun(a,b)后,由于参数传递为值传递,单向传递,结果不能传回主调函数,所以main()内a和b之不变,结果5,3
所以,此程序的运行结果为 3,5,5,3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yy3110044
2009-04-12 · TA获得超过360个赞
知道答主
回答量:251
采纳率:0%
帮助的人:0
展开全部
在这段代码中fun方法(函数,我是学java的,习惯说方法)的功能是将接受收的两个参数的值互换并打印出来,无返回值.

在main方法中调用了fun方法,并把x,y的值传递进去,并打印出来,所以是3,5
而main方法中的x,y的值并没有改变,所以main方法中的printf语句是将x,y的值打印出来,所以是,5,3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lilei_ll_ii
2009-04-12 · TA获得超过446个赞
知道小有建树答主
回答量:348
采纳率:100%
帮助的人:315万
展开全部
首先你的自定义函数没有返回值 是void的,
所以fun函数只做输出x,y值的作用
那么来分析一下,你给fun函数传递进去 ,5,3
首先赋值运算这,1.x=x+y;x=5+3;x=8;
2.y=x-y;y=8-3;y=5;
3.x=x-y;x=8-5;x=3;
所以输出个 3,5;
既然fun函数没有返回值,所以x,y的值不影响main函数的执行,也就是说main函数中,x,y的值没有被改变
所以输出 5,3
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eire1224
2009-04-12 · TA获得超过407个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:290万
展开全部
首先fun函数内
x=5 y=3
x=x+y 后 x=8
y=x-y 后 y=5
x=x-y 后 x=3
所以第一组输出是3,5,

至于为什么第二组是5,3,
那是因为你函数使用的是值参 而函数执行完成后 值参的传参方式不改变参数的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式