C语言编程实现分数的加减法 要求化简的.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 01:35:43
C语言编程实现分数的加减法 要求化简的.
编写一个程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d".
其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=0,=0).
数据以EOF结束
输出
对于输入数据的每一行输出两个分数的运算结果.
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0
提示
编写一个程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d".
其中a,b,c,d是一个0-9的整数.o是运算符"+"或者"-",(b!=0,=0).
数据以EOF结束
输出
对于输入数据的每一行输出两个分数的运算结果.
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0
提示
#include<stdio.h>
#include <math.h>
int GCD(int m,int n) //求最大公约数
{
int tmp;
m=abs(m);
n=abs(n);
if(m==n)
return m;
if(m<n)
{
tmp=m;
m=n;
n=tmp;
}
while(m%n!=0)
{
tmp=m;
m=n;
n=tmp%n;
}
return n;
}
int main()
{
int a,b,c,d; //两个分数的分子和分母
int gcd_mn;
int res_den,res_num; //分母和分子
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
gcd_mn=GCD(b,d); //求最大公约数
res_den=b*d/gcd_mn;
if(op=='+')
res_num=a*(res_den/b)+c*(res_den/d);
else
res_num=a*(res_den/b)-c*(res_den/d);
if(res_num!=0)
{
gcd_mn=GCD(res_num,res_den);
res_num=res_num/gcd_mn;
res_den=res_den/gcd_mn;
printf("%d/%d\n",res_num,res_den);
}
else
printf("0\n");
return 0;
}
代码可能有点乱,运行无误
再问: 幸苦了 我改了下你的代码 你没有考虑分子分母相等的情况可以不用分数的形式表达 但是我就是改了还是报错....郁闷...
再答: 考虑分子分母相等的话是很难做的,因为输入是按4个数字的。如果要改的话,就得用循环,而且得控制好。不过也只用改scanf就行了,我弄好可再看看吧
#include <math.h>
int GCD(int m,int n) //求最大公约数
{
int tmp;
m=abs(m);
n=abs(n);
if(m==n)
return m;
if(m<n)
{
tmp=m;
m=n;
n=tmp;
}
while(m%n!=0)
{
tmp=m;
m=n;
n=tmp%n;
}
return n;
}
int main()
{
int a,b,c,d; //两个分数的分子和分母
int gcd_mn;
int res_den,res_num; //分母和分子
char op;
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
gcd_mn=GCD(b,d); //求最大公约数
res_den=b*d/gcd_mn;
if(op=='+')
res_num=a*(res_den/b)+c*(res_den/d);
else
res_num=a*(res_den/b)-c*(res_den/d);
if(res_num!=0)
{
gcd_mn=GCD(res_num,res_den);
res_num=res_num/gcd_mn;
res_den=res_den/gcd_mn;
printf("%d/%d\n",res_num,res_den);
}
else
printf("0\n");
return 0;
}
代码可能有点乱,运行无误
再问: 幸苦了 我改了下你的代码 你没有考虑分子分母相等的情况可以不用分数的形式表达 但是我就是改了还是报错....郁闷...
再答: 考虑分子分母相等的话是很难做的,因为输入是按4个数字的。如果要改的话,就得用循环,而且得控制好。不过也只用改scanf就行了,我弄好可再看看吧
C语言编程实现分数的加减法 要求化简的.
用C语言编程实现一个简单的四则运算计算器
C语言编程实现从1到100的求和
C语言编程实现2*3的矩阵转置
、从键盘输入N个数据,求出其中的最大值.要求用自定义函数实现.编程题用C语言成
急!C语言编程:10个评委的给分中,去掉一个最高分,去掉一个最低分,剩余8个分数求平均值.请编程实现之
C语言编程:随机出10道100以内的整数加减法算术题.
C语言编程用试探法(要求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数.
用c语言实现比较两个分数的大小要求:用子函数实现比较.先比较两个数的分母,分母相同比较分子;否则通分比
C语言编程实现用9个数字排成没有重复数字的完全平方数
C语言编程实现计算1到100之间的奇数之和
编程实现,求和s=2!+4!+6!+8!+10!.要c语言的,