本题要求编写程序,计算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<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
void simp(long *a,long *b){
long temp,temp1,temp2;
temp = *a;
temp1 = *b;
while(temp1){
temp2 = temp%temp1;
temp = temp1;
temp1 = temp2;
}
*a = *a/temp;
*b = *b/temp;
} void print(long a,long a1){
long ka = a/a1;
a = a%a1;
if(a<||a1<||ka<)
printf("(");
if(a==)
printf("%ld",ka);
else if(ka!=)
printf("%ld %ld/%ld",ka,abs(a),abs(a1));
else{
if(a1<){
a = -a;
a1 = -a1;
}
printf("%ld/%ld",a,a1);
} if((a<||a1<||ka<))
printf(")"); } void print1(long a,long a1,long b,long b1,long c,long c1,char k){
simp(&c,&c1);
print(a,a1);
printf(" %c ",k);
print(b,b1);
printf(" = ");
print(c,c1);
printf("\n");
} int main(){
long a,a1,b,b1;
long c[][];
char sign[]={'+','-','*','/'};
scanf("%ld/%ld",&a,&a1);
scanf("%ld/%ld",&b,&b1); simp(&a,&a1);
simp(&b,&b1); c[][] = b1*a1;
c[][] = a*b1+b*a1;
c[][] = b1*a1;
c[][] = a*b1-b*a1;
c[][] = b1*a1;
c[][] = a*b;
c[][] = a1*b;
c[][] = a*b1; for(int i=;i<;i++){
print1(a,a1,b,b1,c[i][],c[i][],sign[i]);
} if(b==){
print(a,a1);
printf(" / ");
print(b,b1);
printf(" = ");
printf("Inf");
return ;
}else{
print1(a,a1,b,b1,c[][],c[][],sign[]);
}
}

最新文章

  1. iperf交叉编译:
  2. Divide and conquer:Aggressive Cows(POJ 2456)
  3. 【BZOJ】1090: [SCOI2003]字符串折叠(dp)
  4. Android真机测试 INSTALL_FAILED_INSUFFICIENT_STORAGE 解决方法[转]
  5. C语言知识总结(1)
  6. 剑指offer--面试题14
  7. 线性求中位数 poj2388
  8. Retrofit – Java(Android) 的REST 接口封装类库
  9. yarn的基本组成和工作流程
  10. 解决itunesconnect无法訪问
  11. QDebug &amp;operator&lt;&lt;出错(根据QString来找,是不得要领的,而是应该根据QString所在的对象来思考)
  12. 最近总当机,IT帮网站用了1天时间成功搬家
  13. centos mail使用外部SMTP发送邮件
  14. 从零开始的JS生活(一)——JS简介、变量及基本结构
  15. mvc中html导出成word下载-简单粗暴方式
  16. HTML表单设计(上)
  17. Intel 移位指令的陷阱(转)
  18. K2项目开发流程
  19. JS 使用html2canvas实现截图功能的问题记录和解决方案
  20. Spring Boot入门第一天:Hello, Spring Boot!

热门文章

  1. 超简单的激活Microsoft Office 2016 for Mac 方法
  2. wParam和lParam两个参数到底是什么意思?
  3. .net 实体类与json转换(.net自带类库实现)更新
  4. phpstorm 软件
  5. 缓存、队列(Memcached,Redis,rabbitMQ)
  6. CSS 框模型
  7. Java的一些常见问题,JRE,JDK,JVM,包等概念理解
  8. 【代码笔记】iOS-获得现在的周的日期
  9. Android framework编译出来的jar包classes.jar的位置
  10. Gui系统之View体系(2)---View的setContent