c++编译
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct Fraction{
int up,down;
};
int gcd(int a,int b){
while(b!=0){
int r=b;
b=a%b;
a=r;
}
return a;
}
Fraction reduction(Fraction result){
int d=gcd(abs(result.up),abs(result.down));
result.up/=d;
result.down/=d;
return result;
}
Fraction addandminu(char str[]){
Fraction result;
if(str[3]=='+'){
result.up=(str[0]-'0')*(str[6]-'0')+(str[4]-'0')*(str[2]-'0');
result.down=(str[2]-'0')*(str[6]-'0');
return reduction(result);
}
else{
result.up=(str[0]-'0')*(str[6]-'0')-(str[4]-'0')*(str[2]-'0');
result.down=(str[2]-'0')*(str[6]-'0');
return reduction(result);
}
}
int main()
{
char str[8];
Fraction res;
while(scanf("%s",str)!=EOF){
res=addandminu(str);
if(res.up==0)
cout<<0<<endl;
else if(res.down==1)
cout<<res.up<<endl;
else
cout<<res.up<<"/"<<res.down<<endl;
}
return 0;
}
注释:首先不要忘记给得到的分数进行化简,分子为0时,直接输出0。分母为1时直接输出分子。