*下列给定程序中,函数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) /**********ERROR**********/ { t=a;b=a;a=t;} r=a%b; while(r!=0) { a=b;b=r;r=a%b;} /**********ERROR**********/ return(a); } int 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); return 0; }
时间: 2023-07-23 13:47:22 浏览: 114
以下是修改后的函数fun的代码:
int fun(int a, int b) {
int r, t;
if (a < b) { // 如果a小于b,交换a和b的值
t = a;
a = b;
b = t;
}
r = a % b;
while (r != 0) {
a = b;
b = r;
r = a % b;
}
return b; // 返回最大公约数
}
解释:修改后的函数fun中,首先判断a和b的大小关系,如果a小于b,将两个数的值交换。然后使用while循环计算a和b的最大公约数,每一轮循环中,将a的值赋给b,将b的值赋给r(即a除以b的余数),计算新的r值。当r等于0时,b的值就是a和b的最大公约数。最后返回b的值。
相关问题
def fun(m,n): while n: m,n=n,m%n return m arr=[24,18,120,54,36,35,72,33print(arr[-2])hcf=fun(arr[0],arr[2]) for i in range(len(arr)): if i>2 and i%2==0: hcf=fun(hcfarrlil) print(hcf)
这段代码存在一些语法错误,我先给你进行修改:
```python
def fun(m, n):
while n:
m, n = n, m % n
return m
arr = [24, 18, 120, 54, 36, 35, 72, 33]
print(arr[-2])
hcf = fun(arr[0], arr[2])
for i in range(len(arr)):
if i > 2 and i % 2 == 0:
hcf = fun(hcf, arr[i])
print(hcf)
```
这段代码实现了求多个数的最大公约数。首先定义了一个求最大公约数的函数 `fun(m, n)`,然后定义了一个列表 `arr`,给定了一些整数。接着打印了 `arr` 列表中倒数第二个数(即 `35`)。然后定义了一个变量 `hcf`,初始化为 `arr[0]` 和 `arr[2]` 的最大公约数,然后通过 for 循环依次将 `arr` 中的其他数和 `hcf` 求最大公约数,最终得到所有数的最大公约数并打印出来。
阅读全文