1034. 有理数四则运算(20)
来源:互联网 发布:gst5000软件 编辑:程序博客网 时间:2024/06/04 08:08
1034. 有理数四则运算(20)
题目
本题要求编写程序,计算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/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
输入样例2:
5/3 0/6
输出样例2:
1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf
思路
这个。。。不得不说好麻烦,整数部分,小数部分,输出。。。
代码
#include <stdio.h>#include <stdlib.h>#include <math.h>void print(long x,long y);void sim(long x,long y);int main(void){ long a1,a2,b1,b2,sum1,sum2; scanf("%ld/%ld %ld/%ld",&a1,&a2,&b1,&b2); //加 sum1=a1*b2+a2*b1; sum2=a2*b2; print(a1,a2);printf(" + ");print(b1,b2);printf(" = ");print(sum1,sum2);printf("\n"); //减 sum1=a1*b2-a2*b1; sum2=a2*b2; print(a1,a2);printf(" - ");print(b1,b2);printf(" = ");print(sum1,sum2);printf("\n"); //乘 sum1=a1*b1; sum2=a2*b2; print(a1,a2);printf(" * ");print(b1,b2);printf(" = ");print(sum1,sum2);printf("\n"); //除 sum1=a1*b2; sum2=a2*b1; if(sum2<0){sum1=-sum1;sum2=-sum2;} print(a1,a2);printf(" / ");print(b1,b2);printf(" = ");print(sum1,sum2);printf("\n"); return 0;}void print(long x,long y){ if(x==0) { printf("0"); return; } if(y==0) { printf("Inf"); return; } int intf=1,flag=0; if(x<0) { intf*=-1; x=-x; } if(y<0) { intf*=-1; y=-y; } if(intf<0)printf("("); if(x>y)flag=1; if(x<y)flag=-1; switch (flag) { case 1:{if(intf<0)printf("-"); printf("%ld",x/y); if(x%y){printf(" ");sim(x%y,y);}break;} case 0:{if(intf<0)printf("-");printf("%ld",x/y);break;} case -1:{if(intf<0)printf("-");sim(x,y);break;} } if(intf<0)printf(")"); return;}void sim(long x ,long y){ long r,a=x,b=y; while(b) { r=a%b; a=b; b=r; } x/=a;y/=a; printf("%ld/%ld",x,y); return;}
阅读全文
0 0
- 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. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 解决嵌入式系统用户态和内核态定时时间精度不够的问题
- Shell编程中的数组定义、遍历
- 获取Iframe页面高度,并将高度赋值给Iframe
- Struts之采用注解的方式来完成对数据的校验
- python-机器学习-0-简介
- 1034. 有理数四则运算(20)
- 【51nod】1080 两个数的平方和
- 这可能是最好的RxJava 2.x 入门教程(五)
- 释放技术的想象-解码腾讯云软件架构与应用
- 一些简单的小程序_2——C语言篇
- Windows_Postgresql相关错误处理
- socket的实现,安卓系统AOSP源码
- Mybatis批量修改mysql犯的两个错Query was empty和
- Dubbo调度机制解析(cluster扩展或者路由扩展)