注意分子大于分母的情况! #include<stdio.h> #include<string.h> char tt[20]; int da( int a,int b) { int temp, x, y; if(a>b) {x=b;y=a;} else {x=a;y=b;} int i; for(i=x;i>=1;i--) if(a%i==0&&b%i==0) return i; } int fbs(int a) { if(a>=0)return a; else return -a; } int main() { int a,b,c,d,up,down; char fu; while(scanf("%s",&tt)!=EOF) { a=tt[0]-'0';b=tt[2]-'0';c=tt[4]-'0';d=tt[6]-'0'; fu=tt[3]; if(fu=='+') { up=a*d+c*b;down=b*d; } else { up=a*d-c*b;down=b*d; } if(up==0) printf("0/n"); else { if(up%down==0) printf("%d/n",up/down); else if(up>down) { int kk=up/down; up=up-kk*down; int temp=da(fbs(up),fbs(down)); printf("%d%d/%d/n",kk,up/temp,down/temp); } else { int temp=da(fbs(up),fbs(down)); printf("%d/%d/n",up/temp,down/temp); } } } }