1034. 有理数四则运算
来源:互联网 发布:江苏凤凰数据有限公司 编辑:程序博客网 时间:2024/06/05 00:11
原题描述:
本题要求编写程序,计算2个有理数的和、差、积、商。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。
输出格式:
分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中没有超过整型范围的整数。
输入样例1:2/3 -4/2输出样例1:
2/3 + (-2) = (-1 1/3)2/3 - (-2) = 2 2/32/3 * (-2) = (-1 1/3)2/3 / (-2) = (-1/3)输入样例2:
5/3 0/6输出样例2:
1 2/3 + 0 = 1 2/31 2/3 - 0 = 1 2/31 2/3 * 0 = 01 2/3 / 0 = Inf
思路
这道题的注意点就是分数的约分和表示。
1.题目限定了输入输出都不超过整型范围,当我们计算两个分数的加减乘除时,分子分母就应该不超过长整形范围
3.三种输出形式
代码
#include <stdio.h>long GCD( long a , long b ){ long r = 0 ; while ( r = a % b ) { a = b ; b = r ; } return b;}void frac( long n , long d ){ //判断分母是否为0 if ( d == 0 ) { printf("Inf"); return ; } //判断符号 int inegative = 1 ; if ( n < 0 ) { n = -n ; inegative *= -1; //通过两者之积的方式来判断输出的正负情况 } if ( d < 0 ) { d = -d; inegative *= -1; } long gcd = GCD ( n , d ); //gcd为整数部分 n /= gcd; //最简值下的分母 d /= gcd; //最简值下的分子 if ( inegative == -1 ) printf("(-"); if ( n / d && n % d ) printf("%ld %ld/%ld",n/d, n%d, d ); //假分数 else if ( n % d ) printf("%ld/%ld",n%d, d ); //分数 else printf("%ld",n/d); //整数 if ( inegative == -1 ) printf(")");}int main ( ){ long a1, b1, a2, b2 ; int i ; scanf("%ld/%ld %ld/%ld",&a1,&b1,&a2,&b2) ; char op [ 4 ] = { '+', '-', '*' , '/' } ; for ( i = 0 ; i < 4 ; i ++ ) { frac( a1, b1 ); printf(" %c ",op[ i ] ); frac( a2, b2 ); printf(" = "); switch( op [ i ] ) { case '+' : frac ( a1 * b2 + a2 * b1, b1 * b2 ); break ; case '-' : frac ( a1 * b2 - a2 * b1 , b1 * b2 ); break ; case '*' : frac ( a1 * a2 , b1 * b2 ); break ; case '/' : frac ( a1 * b2 , b1 * a2 ); break ; } printf("\n"); } return 0 ;}
原文链接见:http://www.jianshu.com/p/5303f2431f05
阅读全文
0 0
- 1034. 有理数四则运算
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算
- 1034. 有理数四则运算(20)
- 蒜头君的树
- 单轨迹传感器巡线
- PHP与ajax的长轮询
- 阿里云效团队大规模代码构建技术实践
- 学习ORACLE Scheduler特性(8)Application抛出的Events
- 1034. 有理数四则运算
- 容能科技亮相宝博会 全云能力助力企业互联网+
- 谈谈数据库连接池的原理
- 南京邮电大学网络攻防平台逆向writeup之[maze]
- 爬取豆瓣美女图片网美女图片
- PHP解决多进程同时读写一个文件的问题
- 学习ORACLE Scheduler特性(9)创建Chains
- HTML初识(1)--表单提交
- - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSourc....报错处理