【C语言】【函数】1有冲突的“printf”,2带有省略号的形参列表不能匹配空形参名称列表声明。求解

C语言初学者,写约分分数为最简函数的程序,遇到警告:1有冲突的“printf”,2带有省略号的形参列表不能匹配空形参名称列表声明。求解

img

#include
int GCD(int x,int y);
int main
{
    int m,n,r;    
    scanf("%d %d",&m,&m);
    r=GCD(m,n);
    printf("%d/%d",(m/r),(n/r));
} 
int GCD(int x,int y)//求最大公约数 
{
    if(x>y)
    {
        if(x%y==0)
        return y;
        else
        return GCD(x,x%y);
    }
    else
    {
        if(y%x==0)
        return x;
        else
        return GCD(y,y%x);
    }
}

参考GPT的回答和自己的思路,以下是修改后的代码:

#include <stdio.h>

int GCD(int x, int y);

int main(void) {
    int m, n, r;    
    scanf("%d %d", &m, &n);
    r = GCD(m, n);
    printf("%d/%d", m / r, n / r);
    return 0;
} 

int GCD(int x, int y) {
    if (x > y) {
        if (x % y == 0) {
            return y;
        } else {
            return GCD(x, x % y);
        }
    } else {
        if (y % x == 0) {
            return x;
        } else {
            return GCD(y, y % x);
        }
    }
}

代码修改的地方如下:

1.main 函数需要加上 void 参数,表示该函数没有输入参数。
2.在 scanf 函数中第二个参数应该是 &n 而不是 &m。
3.在 printf 函数中,需要在分数的两个部分中间加上一个 / 符号。
4.在 if 语句中的代码块应该使用花括号 {} 括起来。
5.在 if 语句中,判断 y % x == 0 的条件应该是 y 能够被 x 整除。

main函数后面的括号没写啊