c语言中,以下程序输出结果是什么?

intabc(intu,intv);main(){inta=24,b=16,c;c=abc(a,b);printf("%d\n",c);}intabc(intu,intv... int abc ( int u , int v ) ;
main ( )
{
int a = 24 , b = 16 , c ;
c = abc ( a , b ) ;
printf ( "%d\n" , c ) ;
}
int abc ( int u , int v )
{
int w ;
while ( v )
{ w = u%v ; u = v ; v = w }
return u ;
}
提问:
1、以上程序输出结果是什么?
2、求详细步骤过程
展开
 我来答
tanzhangwen
2012-09-02 · TA获得超过1136个赞
知道小有建树答主
回答量:499
采纳率:0%
帮助的人:845万
展开全部
输出为8
其实这是一个球最大公约数的函数,用的是欧拉公式
a b两个数的最大公约数为选大的%小的,然后替换
至于你说的步骤,你可以把abc(24,16)代入
开始v=16
while: w=8 u=16 v=8
while: w=0 u=8 v=0 退出循环
返回u=8
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-02
展开全部
结果为8,分析
int abc ( int u , int v )

这个函数,while(16) 24%16=8 即 w=8,u=16, v=8;第2次 while(8) 16%8=0 即w=0,u=8,v=0
此时while(0)跳出循环,所以程序返回8.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
366403124
2012-09-02
知道答主
回答量:24
采纳率:0%
帮助的人:3.5万
展开全部
调用子函数,while 第一次循环w~8.u~16.v8*第二次,0停止循环。返回16拿c接收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y7429949
2012-09-02 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:38.9万
展开全部
16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
九鎏瑬
2012-09-02
知道答主
回答量:88
采纳率:0%
帮助的人:21万
展开全部
16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式