作业帮 > 综合 > 作业

C语言编程用试探法(要求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数.

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/12 21:49:15
C语言编程用试探法(要求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数.
具体要求:【输入】输入由键盘输入,只有1行.这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“[m],[n]”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is [所求最大公约数]!”【数据范围】保证100%的数据在int范围内.跪谢大神们.
C语言编程用试探法(要求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数.
#include<stdio.h>
void gcd(int m, int n) {
int temp = m, i, max;
if(temp > n) {
temp = n;
}
max = temp;

for(i=temp; i>=1; i--) {
if(m%max==0 && n%max==0) {
printf("The result is [%d]", max);
return;
}
max--;
}
}

int main() {
int M, N;

scanf("[%d],[%d]", &M, &N);
gcd(M, N);

return 0;
}
再问: 有编译错误 In function ‘int gcd(int, int)’: 16: error: return-statement with no value, in function returning ‘int’ 20: warning: no return statement in function returning non-void
再答: #include<stdio.h>
int gcd(int m, int n) {
    int temp = m, i, max;
    if(temp > n) {
        temp = n;
    }
    max = temp;
     
    for(i=temp; i>=1; i--) {
        if(m%max==0 && n%max==0) {
            printf("The result is [%d]", max);
            return 0;
        }
        max--;
    }
}
 
int main() {
    int M, N;
     
    scanf("[%d],[%d]", &M, &N);
    gcd(M, N);
     
    return 0;
}那改成这样再试试
再问: 显示错误答案。编译器输出 In function ‘int gcd(int, int)’: 16: warning: control reaches end of non-void function
再答: 你在gcd函数末尾添加一个return 0
再问: 在哪行加??
再答: #include int gcd(int m, int n) { int temp = m, i, max; if(temp > n) { temp = n; } max = temp; for(i=temp; i>=1; i--) { if(m%max==0 && n%max==0) { printf("The result is [%d]", max); return 0; } max--; } return 0; } int main() { int M, N; scanf("[%d],[%d]", &M, &N); gcd(M, N); return 0; }