求N个有理数的和

    在第一行输入N,第二行输入N个有理数,并且以分子/分母形式输出(如2/3 3/4),输出形式以整数 分子/分母形式输出。

我最终写出了如下代码:

#include<stdio.h>
int main(){
    int N,z,m,z1,m1;//z表示分子,m表示分母
    int num=1;//求输出的整数
    int same=1;//寻找公因数
    scanf ("%d",&N);
    scanf("%d/%d",&z1,&m1);
    for (int i=1;i<N;i++){
        scanf(" %d/%d",&z,&m);
        z1=z1*m+m1*z;//分子计算方式
        m1=m1*m;//分母计算方式
    }
    num=z1/m1;
    z1=z1-num*m1;
    if (m1<0){
        z1=-z1;
        m1=-m1;
    }//符号交换
    int j=1;
    for (j;j<=z1||j<=m1;j++){
        int f,g;
        f=z1%j;
        g=m1%j; 
        if (f==0 && g==0){
        same=j;
        }//寻找公因数
    }
        z1=z1/same;
        m1=m1/same;
    if (num==0&&z1!=0){
        printf("%d/%d",z1,m1);
    }
    if (num!=0&&z1!=0){
        printf("%d %d/%d",num,z1,m1);
    }
    if (z1==0){
        printf("%d",num);
    }//分类输出
}

实在想不明白到底哪里出了问题,在PTA系统中,本题一共有5个测试点,4个答案正确,但是第5个显示浮点错误,就是出现了除以0的情况,怎么改都不对。检查代码明明只有num=z1/m1、m1=m1/same和z1=z1/same三个除法运算,而且m1是输入的,same也是初始化为1,并且只能比1大的数。

虽然没有把这道题完全做对,但是总体上还是有收获的例如用了for循环进行读取数据;分析了负号在分母还是在分子的情况,输出形式中整数是否为0的情况和分子是否为0的情况,考虑的情况还算全面;学会了设新函数(虽然最后发现没有意义又被我删了),也知道了scanf的读取和输入的形式要匹配等等。

至于浮点错误,还是希望自己在3天之内解决吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PGa NH4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值