no,发现我之前那个化简函数有瑕疵,了解到还有一种叫欧几里得算法,更加简单:
int huajian(int a, int b)
{
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
因此分数相加只需要这样写就好了:
//输入两个分式,以分式的形式输出
#include<stdio.h>
int huajian(int a, int b)
{
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main()
{
int m,n,i,j,fenzi,fenmu,a,b,c;
scanf("%d/%d %d/%d",&m,&n,&i,&j);
if(n!=j)//分子不同时通分
{
a=m*j+i*n;//分子
b=j*n;//分母
}
if(n==j)//分母相同时通分
{
a=m+i;//分子
b=n;//分母
}
//接下来是化简过程,用函数解决
c=huajian(a,b);
printf("%d/%d",a/c,b/c);
return 0;
}