C语言题目,求高人指点,在线等
1设计一个函数f,求二个数的最大公约数intf(intx,inty);2设计一个函数g,求二个数的最小公倍数intg(intx,inty);3从键盘输入一个整数,设计一个...
1设计一个函数f,求二个数的最大公约数int f(int x,int y);
2设计一个函数g,求二个数的最小公倍数int g(int x,int y);
3从键盘输入一个整数,设计一个函数inNumber,若为正正数则返回它,否则直到得数>0为止。
#include<stdio.h>
#include<math.h>
int f(int a,int b);
int g(int a,int b);
int inNumber(int a);
main()
{
int a,b,c,d,m,n;
clrscr();
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",a,b,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;
if(a>=b)
x=a;
else
x=b;
for(y=x;y<=a*b;y++)
if(y%a==0&&y%b==0)
{
m=y;break;
}
return(m);
}
int inNumber(int a)
{
int x;
x=0;
while(x==0)
scanf("%d",a);
if(a>0)
x=1;
else
{
printf("wrong!/n");
x=0;
}
return(a);
}
这是我做的,请问有什么问题,我运行了可是出不来结果 展开
2设计一个函数g,求二个数的最小公倍数int g(int x,int y);
3从键盘输入一个整数,设计一个函数inNumber,若为正正数则返回它,否则直到得数>0为止。
#include<stdio.h>
#include<math.h>
int f(int a,int b);
int g(int a,int b);
int inNumber(int a);
main()
{
int a,b,c,d,m,n;
clrscr();
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",a,b,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;
if(a>=b)
x=a;
else
x=b;
for(y=x;y<=a*b;y++)
if(y%a==0&&y%b==0)
{
m=y;break;
}
return(m);
}
int inNumber(int a)
{
int x;
x=0;
while(x==0)
scanf("%d",a);
if(a>0)
x=1;
else
{
printf("wrong!/n");
x=0;
}
return(a);
}
这是我做的,请问有什么问题,我运行了可是出不来结果 展开
3个回答
展开全部
第一,你输入m、n的时候,是不是m,n这样输入的(例如你想输入m=18,n=24;;你应该写18,24,中间有个逗号)。
第二,你在inNumber中,重新输入的a,应该写scanf("%d",&a);你没写去地址符;你在这个地方
while(x==0) ,前面不是给x赋值0吗,while的条件不是永远成立吗?
这个逻辑不清晰。
第三,用户界面不友好,都不知道要输入什么,为什么输入,输入多少。这样调试起来很困难。小程序不一定要写多少注释(当然多一点更好),但是有效的用户提醒还是很有必要的。我想这也是为什么很多很浏览这个问题,但是没有解答的原因吧。
第二,你在inNumber中,重新输入的a,应该写scanf("%d",&a);你没写去地址符;你在这个地方
while(x==0) ,前面不是给x赋值0吗,while的条件不是永远成立吗?
这个逻辑不清晰。
第三,用户界面不友好,都不知道要输入什么,为什么输入,输入多少。这样调试起来很困难。小程序不一定要写多少注释(当然多一点更好),但是有效的用户提醒还是很有必要的。我想这也是为什么很多很浏览这个问题,但是没有解答的原因吧。
来自:求助得到的回答
展开全部
这是改正过的有些提示没加你加上就行。
#include<stdio.h>
#include<math.h>
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;
}
}
#include<stdio.h>
#include<math.h>
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;
}
}
追问
也谢谢你,不过不能选多个答案
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后一个函数while循环是一个无限循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询