我正在编写一个程序,将分数化简到最简形式。以下是我的程序:
#include <stdio.h>
int main(){
int m,x,n,gcd;
printf("Enter a fraction: ");
scanf("%d/%d",&n,&m);
if(m==0)printf("Error");
else
for(;;){
x=m%n;
if(x==0){
gcd=n;
m/=gcd;
n/=gcd;
printf("In lowest terms: %d/%d",n,m);
}else
m=n;
n=x;
}
return 0;
}
我使用欧几里得算法来计算最大公约数。当执行时,它报告:
我的代码有什么问题?浮点异常(核心已转储)
/
和%
运算符,并检查n == 0
的情况。您可能还需要检查scanf
的返回值,它应该是2。 - M Oehmn=x
这一行的缩进。看起来你想把它作为else
的一部分,但实际上并不是(你没有用{}
将多个表达式括起来)。当x=0
时,n
也会被设为零。 - paddy