分数加减法

Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic

Problem Description

编写一个C程序,实现两个分数的加减法

Input

输入包含多行数据

每行数据是一个字符串,格式是"a/boc/d"。

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束

输入数据保证合法

Output

对于输入数据的每一行输出两个分数的运算结果。

注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

Sample Input

1/8+3/8

1/4-1/2

1/3-1/3

Sample Output

1/2

-1/4

0

import java.util.*;

class Cave{

public int sub(int m, int n) {

int t, r, x = m, y = n;

if(m < n) {

t = m;

m = n;

n = t;

}

while(n != 0) {

r = m%n;

m = n;

n = r;

}

return x*y/m;

}

public int sub1(int m, int n) {

int t, r;

if(m < n) {

t = m;

m = n;

n = t;

}

while(n != 0) {

r = m%n;

m = n;

n = r;

}

return m;

}

}

public class Main {

public static void main(String args[]) {

Scanner cin = new Scanner(System.in);

while(cin.hasNext()) {

String a = cin.nextLine();

int b[] = new int[4];

b[0] = a.charAt(0)-'0';

b[1] = a.charAt(2)-'0';

b[2] = a.charAt(4)-'0';

b[3] = a.charAt(6)-'0';

Cave c = new Cave();

if(a.charAt(3) == '+') {

//先找出两个分母的最小公倍数进行通分

int t = c.sub(b[1], b[3]);

//根据分母将分子进行相应的倍数变化

b[0] *= t/b[1];

b[2] *= t/b[3];

b[0] += b[2];

b[1] = t;

if(b[0] == 0) {

System.out.println(0);

continue;

}

else {

//找到分子分母的最大公约数进行约分

t = c.sub1(b[0], b[1]);

b[0] /= t;

b[1] /= t;

}

}

else if(a.charAt(3) == '-') {

int t = c.sub(b[1], b[3]);

b[0] *= t/b[1];

b[2] *= t/b[3];

b[0] -= b[2];

b[1] = t;

if(b[0] == 0) {

System.out.println(0);

continue;

}

else {

t = c.sub1(b[0], b[1]);

b[0] /= t;

b[1] /= t;

}

}

if(b[0]<0&&b[1]<0) {//如果两个数都是负数

if(b[1] == -1) {//如果分母是-1,只输出分子

System.out.println(b[0]*(-1));

}

else {

System.out.println(b[0]*(-1)+"/"+b[1]*(-1));

}

}

else if(b[0] > 0 && b[1] < 0) {//分子分母一正一负

if(b[1] == -1) {//如果分母是-1,只输出分子

System.out.println(b[0]*(-1));

}

else {

System.out.println(b[0]*(-1)+"/"+b[1]*(-1));

}

}

else if(b[0] < 0 && b[1] > 0) {//分子分母一正一负

if(b[1] == 1) {//如果分母是1,只输出分子

System.out.println(b[0]);

}

else {

System.out.println(b[0]+"/"+b[1]);

}

}

else{//分子分母都是正数

if(b[1] == 1) {//如果分母是1,只输出分子

System.out.println(b[0]);

}

else {

System.out.println(b[0]+"/"+b[1]);

}

}

}

}

}

java编写分数加减法_JAVA 分数加减法相关推荐

  1. java编写的浏览器_Java编写简单的网页浏览器

    时间:2019-01-25 概述:网页浏览器 Web 浏览器 用Java语言编写实现一个简单的WEB浏览器,我们经常要在Internet 上浏览网页,这就需要浏览器,目前使用比较广泛的是Interne ...

  2. java编写十个评委_Java题 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分...

    展开全部 //希望你看完采纳 谢谢 #include #define num 10              //  十个评委 void  star(void);           //打印星号 v ...

  3. java编写四则运算代码_java编写四则运算

    GitHub项目地址:https://github.com/TUOZF/test.git 一.需求分析 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算 ...

  4. 用java编写cs游戏_Java CS训练小游戏

    点10次绿快,看能点中几次 实现了最核心的功能,大家可以看源代码去扩展 1.[文件] CSAct.java ~ 262B     下载(238) package CSTrainer; public ...

  5. java编写限制密码_java – 用户’root’@’localhost’拒绝访问(使用密码:YES)

    我想连接我的本地MYSQL数据库,它与XAMP服务器一起安装.我创建了一个新用户,即"NewUser",其密码为"password".我给了这个用户所有的特权. ...

  6. java编写学生管理系统_Java实现学生管理系统

    导读热词 项目描述:通过管理员帐号登录,对学员信息进行管理.可以实现学员信息的增加.修改.删除.查询. 知识点:数组.do{}while循环.for循环.if语句.switch条件语句 学生管理系统的 ...

  7. java编写单词数_JAVA flink小试——单词计数

    本文用java来实现一个简单的fink计数单词. 本文写了两个flink版本,一个普通版本,一个lambda版本.有以下注意点: 写法差异,lambda需要调用return方法,而普通版本是不需要的. ...

  8. java 编写 servlet 程序_Java技术分享:如何编写servlet程序

    身为计算机专业的我,从接触java至今,已经有七年之久,从最开始的小白到现在的大白,这是一个漫长而曲折的历程. 大学刚接触Java这个学科时,一点儿都不理解java是要干嘛的,只知道学起来肯定不容易, ...

  9. Java编写超市购物_Java实现超市购物程序设计

    超市购物程序设计 //超市购物程序设计 //编写一个超市购物程序,实现超市购物功能.购物时,如果购物者所要购买的商品在超市中有,则提示购物者买到了某商品,如果没有购物者所需的商品,则提示购物者白跑了一 ...

最新文章

  1. 使用 Python 和 OpenCV 构建 SET 求解器
  2. 摊牌了:我就靠这几点,搞定了算法面试官
  3. idea没有错误出现红色波浪线怎么去掉?
  4. 【CSS3】好玩的动画线框
  5. jdk动态代理与cglib动态代理--InvocationHandler--MethodInterceptor
  6. HDU-3480 Division (四边形不等式优化DP)
  7. Django 笔记3 -- URL
  8. apache php 单入口,apache配置php实现单一入口方法
  9. 缓冲区溢出漏洞攻击演示实验(CProxy 6.2缓冲区溢出漏洞)
  10. iphone模拟器快捷键使用
  11. SAP OData的CSRF token在ABAP Netweaver服务器上是怎么生成的
  12. Android开发笔记(一百二十九)使用变换图形
  13. Silverlight 4+RIA Services–搜索引擎优化(SEO)
  14. 在SSRS报表中,显示图片
  15. wchar_t转为char*
  16. cp105b linux 驱动,富士施乐 DocuPrint CP105b驱动
  17. 手机号码好坏什么软件测试,测试你的手机号码好不好(很准哦)
  18. QC4+充电协议_一文看懂各家充电协议!总算彻底理清了
  19. 2022年成考(专升本)考试政治练习题及答案
  20. 黑吃黑第一季/全集Banshee迅雷下载

热门文章

  1. 前端Vue和计网面试题总结
  2. 指夹式血氧仪基本原理
  3. 【面经问题总结】小米日常实习 一面
  4. 2022-2028全球与中国应急服务5G技术市场现状及未来发展趋势
  5. 国产ETL etl-engine 星光不问赶路人 时我不待
  6. Ubuntu+Windows双系统远程重启互相切换
  7. 苹果高通 5G 开战!
  8. Direct Shot Correspondence Matching
  9. 马士兵老师的多线程高并发笔记
  10. SpringCloud微服务项目实战 - 6.延迟任务