大家帮帮忙,简单的c语言问题...谢谢啦

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:41:27
想求最大公约数的,可是编译的时候错了,不知道为什么会错...应该怎样改呢?
#include<stdio.h>
main()
{
float a,b,t,r;
scanf("%f%f",&a,&b);

if(a<b) {t=b;b=a;a=t;}

while((r=a%b)!=0)
{
a=b;
b=r;
}
printf("%ld",b);
}
我们要交的作业就是超出的,所以才想到用float

把浮点改成整形就好了
#include<stdio.h>
void main()
{
long a,b,t,r;
scanf("%ld%ld",&a,&b);

if(a<b) {t=b;b=a;a=t;}

while((r=a%b)!=0)
{
a=b;
b=r;
}
printf("%ld",b);
}
如果是超出的就用长整形好了

你可以采用long int啊
如果你非用float不可,那下面的能满足你的要求
#include<stdio.h>
#include<math.h>
main()
{
float a,b,t,r;
scanf("%f%f",&a,&b);

if(a<b) {t=b;b=a;a=t;}

while(fabs(r=fmod(a,b))>1e-6)
{
a=b;
b=r;
}
printf("%.0f\n",b);
}

#include<stdio.h>
main()
{
int a,b,t,r;
scanf("%f%f",&a,&b);

if(a<b) {t=b;b=a;a=t;}

while((r=a%b)!=0)
{
a=b;
b=r;
}
printf("%ld",b);
}

余数都是整数啊,所以都要定义为整型int.

用到%是,数据类型要是为整型