问答题
fun()的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。 例如,若给hum1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。 #include<stdio.h> int fun(int a,int b) int r,t; if(a<b) /**********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);
【正确答案】 (1)t=a;a=b;b=t; (2)return(b);
【答案解析】 [解析] ①本题中函数的功能是求出两个非零正整数的最大公约数。其中,最大公约数是指能最大约去给出的几个数字的数字。例如,15和30能最大约去的数字是15,所以15就是它们的最大公约数。 ②从源程序的main()主函数开始入手,从键盘输入两个正整数,通过语句“a=fun(num1,num2);”调用fun()函数求得它们的最大公约数。 ①根据算法分析,首先要确保a、b两个数中a是较大数,b是较小数,如果不是,则交换a和b。但是第一个标识下,交换a和b两个数的算法有误,所以应将“t=a;b=a;a=t;”改为“t=a;a=b;b=t;”。 ②算法到循环结束,最后余数为0时,b中所存的数即为最大公约数,也就是函数要返回的值。因此,第二个标识下面的“return(a);”改为“return(b)”。 [考点] 函数实现的逻辑关系。
提交答案
关闭