如何用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
最后把答案解出来 展开
例如:
输入一个数:
5
输入5个分数:
1/2
3/4
2/3
3/5
4/7
最后把答案解出来 展开
1个回答
展开全部
每两个分数相加时先求分母的最小公倍数 然后两个分数进行通分 分子相加 最后再约分就得到结果了
追问
这个方法我用回圈写不出来
追答
#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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询