/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者: 臧鹏 * 完成日期: 2012 年 9月 16日 * 版 本 号: 001 * 对任务及求解方法的描述部分 * 输入描述: * 问题描述:分数的加法运算编程 编程思路:分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其化简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。请用四个对话框顺序输入分子和分母,在控制台上输出其运算结果。 * 程序输出: * 程序头部的注释结束 */ public class Demo01 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub fracAdd(1,5,7,20);//结果为:11/20 fracSub(1,5,7,20);//分数相减 fracMul(1,5,7,20);//分数相乘 fractDiv(1,5,7,20);//分数相除 } static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ //以下代码能够在控制台上显示结果 //需要调用求最大公约数的函数 //需要调用求最小公倍数的函数 int denominator; int numerator; if(first_denominator==second_denominator) //分母相同时加分子 { denominator=first_denominator; numerator=first_numerator+second_numrator; } else //否则同分比较分子 { denominator=first_denominator*second_denominator; numerator=first_numerator*second_denominator+first_denominator*second_numrator; } int gcd = gcd(numerator,denominator); denominator = denominator / gcd; numerator = numerator / gcd; System.out.println("输出的结果是"+numerator+"/"+denominator); return ; } static void fracSub(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ //以下代码能够在控制台上显示结果 //需要调用求最大公约数的函数 int denominator; int numerator; if(first_denominator==second_denominator) //分母相同时加分子 { denominator=first_denominator; numerator=first_numerator-second_numrator; } else //否则同分比较分子 { denominator=first_denominator*second_denominator; numerator=first_numerator*second_denominator-first_denominator*second_numrator; } int gcd = gcd(numerator,denominator); denominator = denominator / gcd; numerator = numerator / gcd; System.out.println("输出的结果是"+numerator+"/"+denominator); return ; } static void fracMul(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ //以下代码能够在控制台上显示结果 //需要调用求最大公约数的函数 int denominator; int numerator; denominator=first_denominator*second_denominator; numerator=first_numerator*second_numerator; int gcd = gcd(numerator,denominator); denominator = denominator / gcd; numerator = numerator / gcd; System.out.println("输出的结果是"+numerator+"/"+denominator); return ; } static void fractDiv(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ //以下代码能够在控制台上显示结果 //需要调用求最大公约数的函数 int denominator; int numerator; numerator = first_numerator*second_denominator; denominator = first_denominator*second_numerator; int gcd = gcd(numerator,denominator); denominator = denominator / gcd; numerator = numerator / gcd; System.out.println("输出的结果是"+numerator+"/"+denominator); return ; } static int gcd(int x,int y){ int r; while( y!= 0) { r = x%y; x = y; y = r; } return x; } }