PTA L1-009 N个数求和 C语言

#include<stdio.h>
#include<math.h>
int main()
{
    int c,i;//c输入个数 
    long a[100],b[100],s=1,sum=0,k;//a分子 b分母 s分母最公数 sum相加后分子和     k提出整数后的分子
    scanf("%d",&c);
    for(i=0;i<c;i++)
    {
        scanf("%ld/%ld",&a[i],&b[i]);
        if(b[i]>s)//分母比最大公约数大 
        {
            if(b[i]%s==0)//整数倍直接赋值 
                s=b[i];
            else
                s=s*b[i];//非倍数关系相乘 
        }
        else if(b[i]<s)//分母比最大公约数小 
        {
            if(s%b[i]==0)//整数倍不管 
                s=s;
            else//无倍数关系相乘 
                s=s*b[i];
        }
    }
    for(i=0;i<c;i++) sum=sum+a[i]*(s/b[i]);//分子和 
    if(sum/s!=0) printf("%ld",sum/s);//整数 
    k=sum%s;//提出后剩余分子 
    if(sum%s!=0)//存在分子 
    {
        if(sum/s!=0) printf(" ");//存在整数 
        for(i=k;i>0;i--)//约分 
        {
            if(k%i==0&&s%i==0)
            {
                k=k/i;
                s=s/i;
            }
        }
        printf("%ld/%ld",k,s);
    }
	if(sum%s==0&&sum/s==0) printf("0");//无分数无整数
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值