问个C语言貌似很基础的题目。。。。

#include"stdio.h"
int aa (int x,int y);
main ( )
{int a=24,b=16,c;
c=aa (a,b);
printf ("%d\n",c);}
int aa (int x,int y)
{int w;
while (y)
{w=x%y;
x=y;
y=w;}
return x;}
输出结果是多少?怎么算?

#include"stdio.h"
int aa (int x,int y);
main ( )
{int a=24,b=16,c; //.........
c=aa (a,b); //执行函数int aa (int x,int y
printf ("%d\n",c);}
int aa (int x,int y) //a替换x,b替换y代入
{int w;
while (y) // y(b)=16,不等于0,执行括弧内的指令
{w=x%y;// w=24%16=8
x=y; //y(b)的值赋予x(a)=16
y=w;} //w的值赋予y(b)=8
return x; // 返回x(a)的值即16
}循环到下吃
while (y) //y(b)=8,不为0执行括弧内指令
{w=x%y; //w=16%8=0
x=y; //y(b)的值赋予x(a)=8
y=w;} //w的值赋予y(b)=0
return x;} //返回x(a)的值8
在进行下一次循环
while (y) //y(b)=0跳出循环即函数int aa (int x,int y)执行完了返回值为x(a)=8赋予c,输出c的
{w=x%y; 值 8 完了
x=y;
y=w;}
return x;}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-18
int aa (int x,int y);
main ( )
{
int a=24,b=16,c;
c=aa (a,b);//调用aa(24,16)
printf ("%d\n",c);
}

int aa (int x,int y)
{
//初值x=24,y=16
int w;
while (y)
{
w=x%y;
x=y;
y=w;

//第一次循环后24%16=8,即w=8
//w=8,x=16,y=8,y!=0满足循环

//第二次循环后16%8=0,即w=0
//w=0,x=8,y=0,y==0不满足循环,跳出循环
}

return x;//此时x=8
}追问

输出的不是c么?为什么是x的值?

追答

int aa (int x,int y)这个函数不是有返回值吗?返回的是x的值,c=aa (a,b);将返回值赋值给了c
所以c的值变成了8

本回答被提问者采纳