C语言,小程序没有错误,但是运行不了。

#include<stdio.h>intr;intmain(){intmaxa(int,int);intminb(int,int);inta,b,max,min;prin... #include<stdio.h>
int r;
int main()
{
int maxa(int,int);
int minb(int,int);
int a,b,max,min;
printf("please enter two integers:");
scanf("%d,%d",&a,&b);
max=maxa(a,b);
printf("the maxa is:%d",max);
min=minb(a,b);
printf("the minb is:%d",min);
return 0;
}
int maxa(int a,int b)
{
int t;
if(a<b)
{t=a;a=b;b=t;}
while((r=a%b)!=0)
{ a=b;b=r;}
return b;
}
int minb(int a,int b)
{
return (a*b/r);
}

这个程序中最大公约数没有问题可以出来,但是后面的最小公倍数就出不来。程序没有报错。我也不知道是哪里错了。。。。。。估计是余数r的问题,用全局变量不行吗?为什么第二个小函数里r就不起作用了呢?
展开
 我来答
ahcc08
2012-11-18 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51941
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部

int r;

int maxa(int a,int b);

int minb(int a,int b);

int main()

{

int a,b,max,min;

printf("please enter two integers:");

scanf("%d,%d",&a,&b);

max=maxa(a,b);

printf("the maxa is:%d\n",max);

min=minb(a,b);

printf("the minb is:%d\n",min);

return 0;

}

int maxa(int a,int b)

{

int t;

if(a<b)

{

t=a;

a=b;

b=t;

}

while((t=a%b)!=0){ 

a=b;

b=t;

}

r = b;

return b;

}

int minb(int a,int b)

{

return (a*b/r);

}


帮你修改了一下

1,函数的声明写在main函数的外面,如果有参数,请把参数写出来,不要只写参数类型;

2.照你那个写法,r的值永远为0,0是不可以成为除数的,之所以异常时因为0被用作除数。

运行结果:



函数是不是写反了,运行结果是这样的吗?有点怀疑。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式