struct Fraction{//分数
int up,down;//分子分母
};
1.如果分数为负,负号放到分子上
2.如果分数为0,分子为0,分母为1
3.分子分母没有除1以为的公约数(化简)
分三步:
1.调整分子分母的负号
2.处理分数为0的情况
3.约分:分子分母绝对值的最大公约数。
Fraction reduction(Fraction A){
if(A.down<0){
A.down*=-1;
A.up*=-1;
}
if(A.up==0) A.down=1;
else{
int d=gcd(abs(A.down),abs(A.up));
A.down/=d;
A.up/=d;
}
return A;
}
void showFraction(Fraction A){
A=reduction(A);
if(r.down==1)printf("%ld",r.up);
else if(abs(A.up)>abs(A.down)){
printf("%d %d/%d",A.up/A.down,abs(A.up),abs(A.down));
}
else printf("%d/%d",A.up,A.down);
}
原文:https://www.cnblogs.com/hebust/p/9393975.html