c语言带分数四则运算问题!!!要求被调函数,化简.

设计题目十:四则运算一、问题描述:设计一个练习加、减、乘、除四则运算要求对输入的两个分数选择进行加、减、乘、除四则运算,并输入用分数表示的结果。二、功能要求:1、要求在主... 设计题目十:四则运算
一、问题描述:
设计一个练习加、减、乘、除四则运算要求对输入的两个分数选择进行加、减、乘、除四则运算,并输入用分数表示的结果。
二、功能要求:
1、要求在主函数中输入两个分数和运算符,若两个分数分母等于0则用:exit(0);退出。
2、在被调函数f1()中对输入的数据进行计算。
3、在被调函数f2()中对计算的结果进行化简
三、算法提示:
#include <stdio.h>
long int a,b,c,d,x,y,z;
char op;
int f1();
int f2()
main()
{

}
展开
 我来答
zw_atomic
2008-07-01 · TA获得超过130个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:132万
展开全部
#include <stdio.h>
long int a,b,c,d,x,y,z;
char op;
int f1();
int f2();
main()
{printf("shu ru di yi ge shu de fen zi:");
scanf("%ld",&a);
printf("shu ru di yi ge shu de fen mu:");
scanf("%ld",&b);
if(!b) {printf("error");exit(0);}

printf("shu ru di er ge shu de fen zi:");
scanf("%ld",&c);
printf("shu ru di er ge shu de fen mu:");
scanf("%ld",&d);
if(!d) {printf("error");exit(0);}

getchar();
printf("shu ru yun suan fu:");
scanf("%c",&op);

f1();
f2();

printf("jie guo shi %ld/%ld\n",y,x);
getch();

}
int f1()
{switch(op)
{case '+':x=b*d;y=a*d+b*c;break;
case '-':x=b*d;y=a*d-b*c;break;
case '*':x=b*d;y=a*c;break;
case '/':x=b*c;y=a*d;break;
default:printf("op illegal\n");exit(0);
}
return 1;
}

int f2()
{int i,j,t;
i=x>y?x:y;
j=x+y-i;
t=i%j;
while(t)
{i=j;
j=t;
t=i%j;
}
x=x/j;
y=y/j;
}
碎碎的OH
2008-07-01
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
long int up1,down1,up2,down2;//输入的两个数
long int up3,down3; //结果
char op[2];

int GCD(int a,int b) //最大公约数
{
int t;
while(b)
{
t = a;
a = b;
b = t % b;
}
return a;
}

int LCM(int a,int b) //最小公倍数
{
int t = GCD(a,b);
return t * (a / t) * (b / t);
}

int f1()
{
switch(op[0])
{
case '+':
down3 = LCM(down1,down2);
up3 = up1 * (down3 / down1) + up2 * (down3 / down2);
break;
case '-':
down3 = LCM(down1,down2);
up3 = up1 * (down3 / down1) - up2 * (down3 / down2);
break;
case '*':
down3 = down1 * down2;
up3 = up1 * up2;
break;
case '/':
down3 = down1 * up2;
up3 = up1 * down2;
if(down3 == 0)
exit(0);
break;
default:break;

}
return 0;
}
int f2()
{
int gcd = GCD(down3,up3);
down3 /= gcd;
up3 /= gcd;
return 0;
}
int main()
{
scanf("%ld/%ld%ld/%ld%s",&up1,&down1,&up2,&down2,op);
if(down1 == 0 || down2 == 0)
exit(0);
f1();
f2();
printf("%ld/%ld\n",up3,down3);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式