帮忙一道C语言题!.

(28)有如下程序voidf(intx,inty){intt;if(x<y){t=x;x=y;y=t;}}main(){inta=4,b=3,c=5;f(a,b);f(a... (28) 有如下程序
void f(int x,int y)
{ int t;
if(x<y){ t=x; x=y; y=t; }
}
main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5
详细
展开
 我来答
chinazhsj
2008-07-27 · TA获得超过391个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:151万
展开全部
答案D

原样输出

void f(int x,int y)
这个函数实际上没有任何作用

无法改变main中变量的值

这是C语言传参问题

void f(int x,int y) 值传递

要使函数f能够生效应改成指针传递(C++更有引用方法)
void f(int *x,int *y)
{ int t;
if(*x<*y){ t=*x; *x=*y; *y=t; }
}
百度网友64a17b5de
2008-07-27
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
d
程序在主函数中调用f函数把(a,b)\(a,c)\(b,c)分别传给函数f但这些都是值传递所以在不管函数f做了什么在内存中都是建立了以后又给释放了也就是说第一次调用函数f把a\b的值分别传给x\y在内存中分配给x\y地址又定义了一个t内存也给t分配了一个地址然后判段x是否小于y如果小于做交换。但最后不管做没做交换都是对x和y做而在函数f执行完了以后内存会自动释放它们在第二次调用的时候又从新为它们分配内存空间之后又释放所以不管怎么调用 对主函数中的a\b\c都不会有任何影响结果当然是b如果还不理解你可以在b函数最后一行加上
printf("%x,%x\n",x,y);来看看每次调用时x和y的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuwowuzhi
2008-07-27 · TA获得超过996个赞
知道小有建树答主
回答量:565
采纳率:0%
帮助的人:624万
展开全部
答案 D
因为采用的是值传递,a b c本身的值都不会改变,采用引用传递才会改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
铃雅雅
2008-07-28
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
答案是4,3,5,因为在函数f中并没有改变a,b,c其值,只是按值传递不是按地址传递,所以不会改变a,b,c的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友364db767a
2008-07-27 · TA获得超过230个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:108万
展开全部
d
虽然你也用了函数调用,但函数并不返回值,所以a,b,c的值不变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式