输入含有两个分数的表达式求出其结果以分数形式表示
解决思路:将两个分数通分后运算并将其结果约分输出
有错误欢迎指出
C代码如下:
#include <stdio.h>
int n1,n2;//定义全局变量n1、n2分别存放分子和分母
int main()
{
void cal(int a,int b,int c,int d,char ch);//cal函数计算出分数运算后的结果,未约分
void fun();//用来对n1和n2进行约分
int a,b,c,d;
char ch;
printf("请输入表达式:");
scanf("%ld/%ld%c%ld/%ld",&a,&b,&ch,&c,&d);
cal(a,b,c,d,ch);//计算出还未约分的分子分母
fun();// 计算出约分后的分子分母
printf("%ld/%ld%c%ld/%ld=%ld/%ld\n",a,b,ch,c,d,n1,n2);
return 0;
}
void cal(int a,int b,int c,int d,char ch)
{
switch(ch)
{
case'+':n1=a*d+b*c;n2=b*d;break;
case'-':n1=a*d-b*c;n2=b*d;break;
case'*':n1=a*c;n2=b*d;break;
case'/':n1=a*d;n2=b*c;break;
default:printf("Error!\n");
}
}
void fun()
{
for(int i=2;i<=n1 && i<=n2;i++)
while(n1%i==0 && n2%i==0)
{
n1=n1/i;
n2=n2/i;
}
}