• 分数加减法


    描述

    编写一个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
     1 #include <stdio.h> 
     2 
     3 int gcd(int a,int b);
     4 
     5 int main(){
     6     int a;
     7     int b;
     8     int c;
     9     int d;
    10     char sign;
    11     int fenmu;
    12     int fenzi;
    13     char temp;
    14     
    15     while(scanf("%d/%d%c%d/%d",&a,&b,&sign,&c,&d)!=EOF){
    16         fenmu=b*d/gcd(b,d);
    17         
    18         if(sign=='+')
    19             fenzi=a*fenmu/b+c*fenmu/d;
    20         
    21         else
    22             fenzi=a*fenmu/b-c*fenmu/d;
    23             
    24         if(fenzi==0){  //分子为0直接输出0 
    25             printf("0
    ");
    26             continue;
    27         }
    28         
    29         temp='+';
    30         if(fenzi<0){  //当为负数时,化为正数,标记负号 
    31             fenzi=-fenzi;
    32             temp='-';
    33         }
    34         
    35         if(temp=='-')  //有负号时输出负号 
    36             printf("-");
    37         
    38         if(fenzi%fenmu==0)  //如果整除时直接输出商 
    39             printf("%d
    ",fenzi/fenmu);
    40             
    41         else   //不整除时以分数的形式输出 
    42             printf("%d/%d
    ",fenzi/gcd(fenmu,fenzi),fenmu/gcd(fenmu,fenzi));
    43     }
    44     return 0;
    45 }
    46 
    47 int gcd(int a,int b){
    48     int temp;
    49     
    50     if(a<b){
    51         temp=a;
    52         a=b;
    53         b=temp;
    54     }
    55     
    56     while(a%b!=0){
    57         temp=a%b;
    58         a=b;
    59         b=temp;
    60     }
    61     
    62     return b;
    63 }
  • 相关阅读:
    绘制程序流程图笔记
    强软弱虚引用
    安全点和安全区域
    垃圾回收算法
    垃圾回收相关算法
    内存访问全过程
    多级页表与快表
    分页
    虚拟内存
    内存分段机制
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4097635.html
Copyright © 2020-2023  润新知