两个分数求和???
【问题描述】输入两个分数,输出两个分数之和,要求约分。【输入形式】输入两个分数,格式为:x/y, m/n。
【输出形式】输出约分后的求和结果。
【样例输入】1/2 1/4
【样例输出】3/4
【样例输入】9/10 6/7
【样例输出】123/70
【样例输入】1/5 3/10
【样例输出】1/2(约分后的结果)
【样例说明】提示:可以考虑求两个数的最大公约数。



程序代码:#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;
}

程序代码:#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);
}