C语言代码运行结果一直出错,如何解决?

代码运行结果一直出错,求指正

#include 
int da(int m, int n);
int xiao(int m, int n);
int main()
{
    int m, n;
    scanf_s("m=%d n=%d", &m, &n);
    printf("最大公约数=%d\n最小公倍数=%d", da(m,n), xiao(m,n));
    return 0;
}
int da(int m, int n)
{
    int const sb = m < n ? m : n;
    for (int i = sb;i > 0; i--)
    {
        if (m % i == 0 && n % i == 0) 
        { return i; break; }
    }
}
int xiao(int m, int n)
{
    int const ikun = m > n ? m : n;
    int j;
    for (j = ikun; j > 0; j++)
    {
        if (j % m == 0 && j % n == 0)

        {
             break;
        }
    }
return j;
}

  • scanf_s函数的格式控制字符串应该使用空格分隔输入项,而不是逗号。

  • 函数da()和xiao()在某些情况下可能不返回值,这会导致编译器报错。应该在函数结尾处加上return语句来返回函数值。

  • 函数xiao()中的循环条件有误,应该是j++而不是++j,否则循环会无限进行下去。此外,循环条件也需要修正为j <= m * n,否则在m、n较大的情况下可能导致无法找到最小公倍数。

把你的代码修改一下:

#include <stdio.h>

int da(int m, int n);
int xiao(int m, int n);

int main()
{
    int m, n;
    scanf_s("m=%d n=%d", &m, &n);
    printf("最大公约数=%d\n最小公倍数=%d", da(m, n), xiao(m, n));
    return 0;
}

int da(int m, int n)
{
    int const sb = m < n ? m : n;
    for (int i = sb; i > 0; i--)
    {
        if (m % i == 0 && n % i == 0)
        {
            return i;
        }
    }
    return 0;
}

int xiao(int m, int n)
{
    int const ikun = m > n ? m : n;
    for (int j = ikun; j <= m * n; j++)
    {
        if (j % m == 0 && j % n == 0)
        {
            return j;
        }
    }
    return 0;
}


修改后的代码在我的本地环境中可以正确编译和运行,输出结果也与预期一致。


#include <stdio.h>
int da(int m, int n);
int xiao(int m, int n);
int main()
{
    int m, n;
    scanf_s("m=%d n=%d", &m, &n);
    printf("最大公约数=%d\n最小公倍数=%d", da(m,n), xiao(m,n));
    return 0;
}
int da(int m, int n)
{
    int i,p;
    for (i = m;i > 0; i--)
    {
        if (m % i == 0 && n % i == 0) 
        {
            p=i;
            break; 
        }
    }
    return p;
}
int xiao(int m, int n)
{
    int j,q;
    for (j = m; j > 0; j++)
    {
        if (j % m == 0 && j % n == 0)
        {
            q=j;
             break;
        }
    }
    return q;
}

img

出错提示是啥 你这个输入的时候要这样输入 m=2 n=4这样或者你把scanf("m=%d n=%d", &m, &n);改成scanf("%d%d", &m, &n);这样就直接输入数字2 4