2 qq 32650831 qq_32650831 于 2016.02.16 23:22 提问

c语言分数加减法 我的代码哪里有错?

描述
编写一个C程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束
输入数据保证合法
输出
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0

我的代码是:
#include
int main()
{
int a,b,c,d,e,f,t,i,min;
char aa,bb,cc,dd,fuhao;
while(scanf("%c/%c%c%c/%c",&aa,&bb,&fuhao,&cc,&dd)!=EOF)
{
getchar();//收取空格
a=aa-'0';
b=bb-'0';
c=cc-'0';
d=dd-'0';
if(a*d==b*c && fuhao=='-')
puts("0");
else if(a==0)
{
if(fuhao=='+')
printf("%d/%d\n",c,d);
else
printf("-%d/%d\n",c,d);
}
else if(c==0)
printf("%d/%d\n",a,b);
else if(a==0 && c==0)
puts("0");
else
{

        //分母f
        if(b!=d) //b!=d,需要通分
        {
            f=b*d;
            a*=d;
            c*=b;
        }
        else //b==d
            f=b;

        //算分子e
        if(fuhao=='+')
            e=a+c;
        else
            e=a-c;
        if(e<0){
            printf("-");
            e=-e;}

        //将分子分母化为最简
        min=1;//最大公因数
        int ee=e,ff=f;
        if(ee>ff) {t=ee;ee=ff;ff=t;}
        for(i=2;i<=ee;i++)
        {
            while(ee%i==0 && ff%i==0)
            {
                min*=i;
                ee/=i;
                ff/=i;
            }
        }
        e/=min;
        f/=min;
        if(e%f==0)
            printf("%d\n",e/f);
        else
            printf("%d/%d\n",e,f);
    }
}
return 0;

}

网上提交后wronganswer 哪里错了呢

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.16 23:25
已采纳
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!