下列给定程序中,函数fun()的功能是;求出两个数的最大公约数,并作为函数值返回。例如,若给num1和num2输入 49和21,则输出的最大公约数为7:若给num1和num2分别输入27和81,则输出最大公约数为27。 请改正函数fun()中的错误,

admin2010-05-05  39

问题 下列给定程序中,函数fun()的功能是;求出两个数的最大公约数,并作为函数值返回。例如,若给num1和num2输入 49和21,则输出的最大公约数为7:若给num1和num2分别输入27和81,则输出最大公约数为27。
   请改正函数fun()中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
   #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;b=a;a=t;} 正确:{t=a;a=b;b=t;} (2)错误:return(a); 正确:return(b);

解析 若求两个数的最大公约数,如果b除a的非零余数能够整除a,那么该余数就是最大公约数;若余数为0,则最大公约数为a。该题程序中采用了循环语句,若b除以a的余数不等于0,则继续用a除以所得余数,直至余数为0,如此可以得到 a,b的最大公约数。关于“交换原则”我们在前面已经讲述过了,这里就不再赘述。
转载请注明原文地址:https://kaotiyun.com/show/eHID777K
0

相关试题推荐
最新回复(0)