两个分数求和???
【问题描述】输入两个分数,输出两个分数之和,要求约分。【输入形式】输入两个分数,格式为: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); }