C语言题目,求高人指点,在线等

2024-12-17 12:04:34
推荐回答(3个)
回答1:

第一,你输入m、n的时候,是不是m,n这样输入的(例如你想输入m=18,n=24;;你应该写18,24,中间有个逗号)。
第二,你在inNumber中,重新输入的a,应该写scanf("%d",&a);你没写去地址符;你在这个地方
while(x==0) ,前面不是给x赋值0吗,while的条件不是永远成立吗?
这个逻辑不清晰。
第三,用户界面不友好,都不知道要输入什么,为什么输入,输入多少。这样调试起来很困难。小程序不一定要写多少注释(当然多一点更好),但是有效的用户提醒还是很有必要的。我想这也是为什么很多很浏览这个问题,但是没有解答的原因吧。

回答2:

这是改正过的有些提示没加你加上就行。
#include
#include
int f(int a,int b);
int g(int a,int b);
int inNumber(int a);
//int inNumber(int a);
void main(){
int a,b,c,d,m,n;
scanf("%d%d",&m,&n);
a=inNumber(m);
b=inNumber(n);
c=f(a,b);
d=g(a,b);
printf("a=%d,b=%d,c=%d,d=%d",m,n,c,d);
}
int f(int a,int b)
{int x,y,m;
if(a>=b)
x=b;
else
x=a;
for(y=1;y<=x;y++)
if(a%y==0&&b%y==0)
m=y;
return(m);}

int g(int a,int b)
{
int x,y,m,q;
if(a>=b)
x=b;
else
x=a;
for(y=1;y<=x;y++)
if(a%y==0&&b%y==0)
m=y;
q=a*b/m;
return(q);
}
int inNumber(int a)
{

if(a>0)
return a;
else
{
while(a<1)
{
a++;
}
return a;
}

}

回答3:

最后一个函数while循环是一个无限循环