分数的表示
- 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;
- }
分数的加减乘除太简单, 不赘述.(除法注意判断除数的分子是否为 0)
分数的输出
化简
分母是否为 1(是否为整数)
分子的绝对值是否大于分母 (是否为假分数)
- 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);
- }
来源: http://www.bubuko.com/infodetail-2707489.html