nyoj_111_分数加减法_201311281341
2013-11-28 15:36
323 查看
分数加减法
时间限制:3000 ms | 内存限制:65535 KB难度:2
描述编写一个C程序,实现两个分数的加减法
输入输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d"。 其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束 输入数据保证合法输出对于输入数据的每一行输出两个分数的运算结果。 注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数样例输入
1/8+3/8 1/4-1/2 1/3-1/3
样例输出
1/2 -1/4 0
来源水题比赛上传者hzyqazasdf
#include <stdio.h> int gcd(int a,int b) { int i,t; if(a>b) { t=a;a=b;b=t; } while(a) { i=a; a=b%a; b=i; } return b; } int main() { char s[10]; while(gets(s)) { int i; int a,b1,b2; int t1,t2; //printf("%d\n",gcd(6,4)); a=(s[2]-'0')*(s[6]-'0')/gcd((s[2]-'0'),(s[6]-'0')); b1=a/(s[2]-'0')*(s[0]-'0'); b2=a/(s[6]-'0')*(s[4]-'0'); if(s[3]=='-'){ if(b1<b2) { t1=b2-b1; t2=gcd(t1,a); if(t1==0) printf("%d\n",0); else { printf("-"); printf("%d/%d\n",t1/t2,a/t2); } } else { t1=b1-b2; t2=gcd(t1,a); if(t1==0) printf("%d\n",0); else printf("%d/%d\n",t1/t2,a/t2); } } else { t1=b2+b1; t2=gcd(t1,a); if(t1%a==0) printf("%d\n",t1/a); else printf("%d/%d\n",t1/t2,a/t2); } } return 0; }
简单题
相关文章推荐
- 写代码时,必须注意“异常处理”
- 在Excel中根据某一个单元格的出生日期自动精确计算年龄
- 如何将U盘与Win8.1的所有混在一起的存储设备和驱动器分开显示
- smarty 中的for循环的实现!
- shell: ip合法性检查
- 反转问题--poj1222
- Using Operation Queues for Concurrency
- android 多媒体框架中mediaplay与opencore的衔接调用过程
- CPU相关知识-寄存器与存储器的区别
- 【Xcelsius】在PPT中嵌入水晶易表Xcelsius2008仪表盘
- Oracle 视图添加主键
- 电脑u盘启动盘制作工具
- HQL: Hibernate查询语言
- php urlencode与rawurlencode的区别
- mysql schema设计优化
- 使用paoding lucene分词和网页爬虫实现的简易网页搜索
- 微网站
- BootStrap tabs标签 使用fade效果首次加载页面不能显示内容
- 安卓中的布局属性详解
- JS小功能(onmouseover实现选择月份)实例代码