C语言求助,分数四则运算

#include<stdio.h>

int main()
{
    int a,b,c,d,x,y;
    
    int fz,fm,sum = 1;
    
    char sign,op;
    
    scanf("%d%c%d",&a,&op,&b);

    scanf("%c",&sign);

    scanf("%d%c%d",&c,&op,&d);
    switch(sign)
{
        case'+':x=a*d+b*c;
        y=b*d;
        break;
        case'-':
        x=a*d-b*c;
        y=b*d;
        break;
        case'*':
        x=a*c;
        y=b*d;
        break;
        case'/':
        x=a*d;
        y=b*c;
        break;
        
        x=fz; y=fm;
if(x>y)
{
while(sum!=0)
{
sum = x % y;
x = y;
y = sum; }
x=fz/x; y=fm/x; }
else
{
while(sum!=0)
{
sum = y % x;
y = x;
x = sum; }
x=fz/y; y=fm/y; }
}
printf("%d/%d %c %d/%d = %d/%d\n",a,b,sign,c,d,x,y); 
    
    return 0;
}

原意是求分数的四则运算,输入输出例如下:

input:

1/3 + 1/2

output:

1/3 + 1/2 = 5/6

但是运行总是……

求答

 

这样做反而更繁琐,输入时用a/b,c/d的形式,加减就求bd的最小公倍数e,再用e去除bd得到fg,接着用a,b去乘以f,g;乘法就先a乘c,b乘d,最后求两者最大公约数再约分;除法先把c/d改成d/c,再用乘法