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就不起作用了呢? 展开
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就不起作用了呢? 展开
1个回答
展开全部
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被用作除数。
运行结果:
函数是不是写反了,运行结果是这样的吗?有点怀疑。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询