3.25打卡(找了和一道当初卡了很久的类似的题目)

PTA.7-33 有理数加法
本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
答案:

#include<stdio.h>int main(){
    int a1,a2,b1,b2,res1,res2,i,lit,mor;
    scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2
    a1=a1*b2;    
    a2=a2*b1;    
    res1=a1+a2;    
    res2=b1*b2;    
    if(res1%res2==0)    
    printf("%d",res1/res2);    
    else{        
    if(res1<res2){            
    lit=res1;            
    mor=res2;        
    }else{            
    mor=res1;            
    lit=res2;        
    }        
    for(i=lit;i>=1;i--){
       if(res1%i==0&&res2%i==0)            
       break;        
       }        
       res1=res1/i;        
       res2=res2/i;
        printf("%d/%d",res1,res2);
        }
        return 0;    
        }

本来写这道题是按当初写一道类似有理数的加法的题目的思路去写的,想找到当时最后一个始终没有改出来的错误。这道题很简单,甚至枯燥。主要就是要解决最大公约数和最小公倍数的问题。但是我在编写过程中因为太急了,还是犯了一些编译错误,比如赋值反了的问题,唉,以后编程序还是得小心,不然一快自己就会编错,这道题我也没有用两个分子的最小公倍数,而是直接相乘,因为其实没有花那个必要用循环子再去找一个公倍数,不如直接用分母相乘,就可以使分子得到相应的相乘再得到和。最后用%d/%d使不会出现浮点问题。还有分母为一,其实就是可以直接整除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值