问答题 给定程序MODI1.C中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。 例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 给定源程序: #include int fun(int a,int b) { int r,t; if(a /************found************/ t=a; b=a; a=t; } r=a%b; while(r!=0) { a=b; b=r; r=a%b; } /************found************/ return(a); } main() { int num1, num2,a; printf("Input num1 num2: "); scanf("%d%d",&num1,&num2); printf("num1= %d num2= %d/n/n",num1,num2); a=fun(num1,num2); printf("The maximun common divisor is %d/n/n",a); }
【正确答案】第一处:交换值的次序有问题,所以应改为:t=a;a=b;b=t;。 第二处:返回值错误,应改为:return(b);。
【答案解析】