输入两个分数,计算它们的和,并以最简分式的方式输出 要求用C语言编出来!!在线等答案!!

要求用C语言编出来!!在线等答案!!有追加分!!

#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);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-16
#include <stdio.h>
process(int f1 ,int f2)/*求最大公约数,以便约分的函数*/
{
int fx;
while(f2!=0)
{fx=f1%f2;
f1=f2;
f2=fx;}
return f1;
}
void main()
{
int a,b,c,d,f1,f2,min;
printf("请按格式输入a/b\n");
scanf("%d/%d",&a,&b);
printf("请按格式输入c/d:\n");
scanf("%d/%d",&c,&d);
f1=a*d+b*c;
f2=b*d;
min=process(f1,f2);
printf("答案为:\n");
printf("%d/%d\n",f1/min,f2/min);
}本回答被提问者采纳
第2个回答  2013-04-08
#include<iostream>
using namespace std;
int main()
{
int i,a,b,c,d,g,f,h;
cin>>a>>b>>c>>d;
g=a*c;
f=b*c+a*d;
if(a!=0&&c!=0)
{for(i=1;i<=g;i++)
{if(g%i==0&&f%i==0)h=i;}
cout<<b<<"/"<<a<<"+"<<d<<"/"<<c<<"="<<f/h<<"/"<<g/h<<endl;}
else cout<<"分母不能为零!请重新输入!";
return 0;

}
相似回答