如何用c语言将n个分数相加?

先输入一个n,然后再根据n输入n个分数,最后相加求解。例如:输入一个数:5输入5个分数:1/23/42/33/54/7最后把答案解出来... 先输入一个n,然后再根据n输入n个分数,最后相加求解。
例如:
输入一个数:
5
输入5个分数:
1/2
3/4
2/3
3/5
4/7

最后把答案解出来
展开
 我来答
luoguolong2660
2014-11-25 · TA获得超过157个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:226万
展开全部
每两个分数相加时先求分母的最小公倍数 然后两个分数进行通分 分子相加 最后再约分就得到结果了
追问
这个方法我用回圈写不出来
追答
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define MAX(a, b) (a) > (b) ? (a) : (b)
#define MIN(a, b) (a) < (b) ? (a) : (b)

//获取最小公位数
int getLCM(int a, int b)
{
  int ret = a;
  while(ret % b != 0)
  {
    ret += a;
  }
  return ret;
}


int getGCD(int a, int b)
{
  int ret = MIN(a, b);
  while(ret > 0)
  {
    if(a % ret == 0 && b % ret == 0)
    {
      return ret;
    }
    ret --;
  }
  return -1;
}


int main(int argc, char **argv)
{
  int num = 0;
  int member = 0, denominator = 1;
  
  printf("input total num: ");
  scanf("%d", &num);
  
  while(num --)
  {
    int t_member, t_denominator;
    //不考虑输入整数的情况
    scanf("%d/%d", &t_member, &t_denominator);
    
    int lcm = getLCM(denominator, t_denominator);
    member *= lcm / denominator;
    t_member *= lcm / t_denominator;
    denominator = t_denominator = lcm;
    member += t_member;
    int gcd = getGCD(member, denominator);
    member /= gcd;
    denominator /= gcd;
  }
  
  printf("result = %d/%d\n", member, denominator);
  
  return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式