C语言初学者,写约分分数为最简函数的程序,遇到警告:1有冲突的“printf”,2带有省略号的形参列表不能匹配空形参名称列表声明。求解
#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函数后面的括号没写啊