zoukankan      html  css  js  c++  java
  • PAT乙级1034. 有理数四则运算(20)

    本题要求编写程序,计算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
    

      1 #include<stdio.h>
      2 int gong(long long a,long long b)
      3 {
      4     long long r,min,max;
      5     min=(a>b)?b:a;
      6     max=(a>b)?a:b;
      7     r=max%min;
      8     while(r)
      9     {
     10         max=min;
     11         min=r;
     12         r=max%min;
     13     }
     14     return min;
     15 }
     16 void print(long long a,long long b)
     17 {
     18     long long flag=0,c,d,e;
     19     if(a<0){
     20         a=-a;
     21         flag=1;
     22     }
     23     if(a==0) printf("0");
     24     else{
     25         e=gong(a,b);
     26         a/=e;
     27         b/=e;
     28         c=a/b;
     29         d=a%b;
     30         if(flag==0){
     31             if(d==0) printf("%lld",c);
     32             else{
     33                 if(c==0) printf("%lld/%lld",a,b);
     34                 else printf("%lld %lld/%lld",c,d,b);
     35             }
     36         }
     37         else{
     38             if(d==0) printf("(-%lld)",c);
     39             else{
     40                 if(c==0) printf("(-%lld/%lld)",a,b);
     41                 else printf("(-%lld %lld/%lld)",c,d,b);
     42             }
     43         }
     44     }
     45 }
     46 void add(long long a1,long long b1,long long a2,long long b2)
     47 {
     48     print(a1,b1);
     49     printf(" + ");
     50     print(a2,b2);
     51     printf(" = ");
     52     print(a1*b2+a2*b1,b1*b2);
     53     printf("
    ");
     54 }
     55 void minus(long long a1,long long b1,long long a2,long long b2)
     56 {
     57     print(a1,b1);
     58     printf(" - ");
     59     print(a2,b2);
     60     printf(" = ");
     61     print(a1*b2-a2*b1,b1*b2);
     62     printf("
    ");
     63 }
     64 void muilt(long long a1,long long b1,long long a2,long long b2)
     65 {
     66     print(a1,b1);
     67     printf(" * ");
     68     print(a2,b2);
     69     printf(" = ");
     70     print(a1*a2,b1*b2);
     71     printf("
    ");
     72 }
     73 void divide(long long a1,long long b1,long long a2,long long b2)
     74 {
     75     print(a1,b1);
     76     printf(" / ");
     77     print(a2,b2);
     78     printf(" = ");
     79     if(a2==0) printf("Inf
    ");
     80     else{
     81         if(a2<0){
     82             a2=-a2;
     83             a1=-a1;
     84         }
     85         print(a1*b2,b1*a2);
     86         printf("
    ");
     87     }
     88 }
     89 int main()
     90 {
     91     long long a1,b1,a2,b2;
     92     while(~scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2))
     93     {
     94         add(a1,b1,a2,b2);
     95         minus(a1,b1,a2,b2);
     96         muilt(a1,b1,a2,b2);
     97         divide(a1,b1,a2,b2);
     98     }
     99     return 0;
    100 }

  • 相关阅读:
    软件工程实践总结作业——个人作业
    第四次作业——个人作业——软件案例分析
    第三次作业——结对编程
    第二次作业——结对项目之需求分析与原型模型设计
    使用Git进行代码管理心得
    调研Android Studio开发环境的发展演变(附安装教程,多图)
    软件工程的实践项目的自我目标
    软件工程实践总结
    教师报课系统测试
    第四次个人作业--关于 微软必应词典客户端 的案例分析
  • 原文地址:https://www.cnblogs.com/Annetree/p/5863144.html
Copyright © 2011-2022 走看看