下列给定程序中 函数fun()的功能是;求出两个数的最大公约数 并作为函数值返回。例如 若给num1和nu

计算机 最大公约数,求出,函数 已帮助 人

下列给定程序中,函数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 ",num1, num2);

a=fun(num1, num2);

printf("The maximun common divisor is %d ", a);

}

请帮忙给出正确答案和分析,谢谢!

热搜:下面程序的功能是输出数组s中最大元素

答案解析

难度★★☆ 搜索
  • 正确答案:(1)错误:{t=a;b=a;a=t;} 正确:{t=a;a=b;b=t;} (2)错误:return(a); 正确:return(b);
    (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的最大公约数。关于“交换原则”我们在前面已经讲述过了,这里就不再赘述。