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

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、求详细步骤过程

第1个回答  2012-09-02
输出为8
其实这是一个球最大公约数的函数,用的是欧拉公式
a b两个数的最大公约数为选大的%小的,然后替换
至于你说的步骤,你可以把abc(24,16)代入
开始v=16
while: w=8 u=16 v=8
while: w=0 u=8 v=0 退出循环
返回u=8本回答被网友采纳
第2个回答  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.本回答被提问者采纳
第3个回答  2012-09-02
调用子函数,while 第一次循环w~8.u~16.v8*第二次,0停止循环。返回16拿c接收
第4个回答  2012-09-02
16
第5个回答  2012-09-02
16