注册 登录
编程论坛 C语言论坛

两个分数求和???

D2284581470 发布于 2019-12-16 16:11, 2137 次点击
【问题描述】输入两个分数,输出两个分数之和,要求约分。
【输入形式】输入两个分数,格式为:x/y, m/n。
【输出形式】输出约分后的求和结果。
【样例输入】1/2 1/4
【样例输出】3/4
【样例输入】9/10 6/7
【样例输出】123/70
【样例输入】1/5 3/10
【样例输出】1/2(约分后的结果)
【样例说明】提示:可以考虑求两个数的最大公约数。
     
      
8 回复
#2
rjsp2019-12-16 18:14
什么东西不会呢?

输入:scanf( "%d /%d ,%d /%d", &x, &y, &m, &n )
计算:分子 x*n + m*y,分母 y*n
化简:在这个网站搜搜,多得很 https://bbs.bccn.net/viewthread.php?tid=461209&page=1#pid2548817
#3
纯蓝之刃2019-12-16 19:00
程序代码:
#include <stdio.h>

struct fraction
{
    int zi;
    int mu;
};

int main()
{
    struct fraction num1,num2,tmp;
    int temp;
    printf("请输入两个分数:");
    scanf("%d/%d %d/%d",&num1.zi,&num1.mu,&num2.zi,&num2.mu);

    tmp.zi=num1.zi*num2.mu+num2.zi*num1.mu;
    tmp.mu=num1.mu*num2.mu;

    if(tmp.zi<tmp.mu)
        temp=tmp.zi;
    else
        temp=tmp.mu;

    for(int i=temp;i>0;i--)
    {
        if(tmp.zi%i==0&&tmp.mu%i==0)
        {
            tmp.mu/=i;
            tmp.zi/=i;
            break;
        }
    }

    printf("得到的分数为:%d/%d\n",tmp.zi,tmp.mu);
    return 0;
}
#4
D22845814702019-12-16 21:33
回复 3楼 纯蓝之刃
谢谢谢谢
#5
D22845814702019-12-16 21:37
回复 2楼 rjsp
‘感谢感谢
#6
D22845814702019-12-16 21:38
回复 3楼 纯蓝之刃
没必要用结构体吧!
#7
D22845814702019-12-16 21:49
回复 2楼 rjsp
#include<stdio.h>
int main()
{
    int a, b, c, d;
    int r;
    int temp;
    int fz, fm, fz1, fm1;
    scanf("%d/%d %d/%d",&a,&b,&c,&d);
    fz = a * d + b * c;
    fm = b * d;
    fz1 = fz;
    fm1 = fm;
    if (fz < fm)
    {
        temp = fz;
        fz = fm;
        fm = temp;
    }
    r = fz % fm;
    while (r != 0)
    {
        fz = fm;
        fm = r;
        r = fz % fm;
    }
    fz1 = fz1 / fm;
    fm1 = fm1 / fm;
    printf("%d/%d\n",fz1,fm1);
    getchar();
    return 0;
}
#8
自学的数学2019-12-17 15:06
程序代码:
#include "stdio.h"
int fun(int num1,int num2)/*求最大公约数函数*/
{
int a,b,temp;
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;
b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
return a;
}
main()
{
int a1,a2,b1,b2,c=1,num1,num2;
printf("请输入第一个分数的分子:\n");
scanf("%d",&a1);
printf("请输入第一个分数的分母:\n");
scanf("%d",&a2);
printf("请输入第一个分数的分子:\n");
scanf("%d",&b1);
printf("请输入第一个分数的分母:\n");
scanf("%d",&b2);
num1=a1*b2+b1*a2;
num2=a2*b2;
c=fun(num1,num2);
num1=num1/c;
num2=num2/c;
if(num2==1)
printf("结果为:%d:",num1);
else
printf("结果为:%d/%d:",num1,num2);
}
#9
D22845814702019-12-17 16:18
回复 8楼 自学的数学
谢谢,为什么都是版主回复我
1