zoukankan      html  css  js  c++  java
  • 作业二:个人编程项目——四则运算

    题目:

    • 自动生成四则运算题目

    基本要求:

    • 除了整数以外,还能支持真分数的四则运算。
    • 对实现的功能进行描述,并且对实现结果要求截图。

    编程环境:

    • 本次编程使用的是C语言,编程软件使用的是C-free5。

    主要功能:

    • 使用者输入所需要的题目数量,程序自动生成所需数量的四则运算题目(其中包括整数与真分数的加减乘除运算)。

    设计思想:

    • 首先,看到题目的时候,由于是程序自动生成数字,所以必然需要 rand()函数来为因数随机产生各种数字,而加减乘除四个符号的随机也需要利用随机函数进行选择。
    • 因为有四个运算符号,所以需要用到switch()来进行选取。
    • 由于需要分数,随机数字需要4个,每2个合成一个分数。
    • 在设计中,为了简化题目,便于计算,利用调用函数计算出分数的分子分母的最大公约数,然后计算出分数的最简分数。

    程序运行代码:

     1 #include"stdio.h"
     2 #include"stdlib.h"
     3 #include"time.h"
     4 
     5 int max(int a,int b)
     6 {
     7     int k,l,p;
     8     if(a<b){l=a;a=b;b=l;}
     9     while(b!=0)
    10     {    
    11         k=a%b;a=b;b=k;
    12     }
    13     p=a;
    14     return p;
    15     
    16 }
    17 main()
    18 {
    19     int a,b,c,d,t,k,m,p;
    20     int *p1;
    21     srand((int)time(NULL));
    22     printf("请输入需要的题数	");
    23     scanf("%d",&k);
    24         for(int i=0;i<k;i++)
    25         {
    26             a=rand()%100+1;
    27             b=rand()%100+1;
    28             c=rand()%100+1;
    29             d=rand()%100+1;
    30             t=rand()%8;
    31             switch(t)
    32             {
    33                 case 0:printf("%d + %d=
    ",a,b);break;
    34                 case 1:{
    35                         if(a<b){m=a,a=b,b=m;}
    36                         printf("%d - %d=
    ",a,b);break;
    37                         }
    38                 case 2:printf("%d × %d=
    ",a,b);break;
    39                 case 3:printf("%d ÷ %d=
    ",a,b);break;
    40                 case 4:{
    41                         if(a>b){m=a,a=b,b=m;}
    42                         if(c>d){m=c,c=d,d=m;}
    43                         a=a/max(a,b);
    44                         b=b/max(a,b);
    45                         c=c/max(c,d);
    46                         d=d/max(c,d);
    47                         printf("%d/%d + %d/%d=
    ",a,b,c,d);break;
    48                           }
    49                 case 5:{
    50                         if(a>b){m=a,a=b,b=m;}
    51                         if(c>d){m=c,c=d,d=m;}
    52                         a=a/max(a,b);
    53                         b=b/max(a,b);
    54                         c=c/max(c,d);
    55                         d=d/max(c,d);
    56                         printf("%d/%d - %d/%d=
    ",a,b,c,d);break;
    57                           }
    58                 case 6:{
    59                         if(a>b){m=a,a=b,b=m;}
    60                         if(c>d){m=c,c=d,d=m;}
    61                         a=a/max(a,b);
    62                         b=b/max(a,b);
    63                         c=c/max(c,d);
    64                         d=d/max(c,d);
    65                         printf("%d/%d × %d/%d=
    ",a,b,c,d);break;
    66                           }
    67                 case 7:{
    68                         if(a>b){m=a,a=b,b=m;}
    69                         if(c>d){m=c,c=d,d=m;}
    70                         a=a/max(a,b);
    71                         b=b/max(a,b);
    72                         c=c/max(c,d);
    73                         d=d/max(c,d);
    74                         printf("%d/%d ÷ %d/%d=
    ",a,b,c,d);break;
    75                           }
    76             }
    77         }
    78     return 0;
    79 }

    程序运行截图:

    总结:

      这次作业我认为比较简单,在最开始的设计中,只有整数的加减乘除运算,只用到了3个rand()函数(2个因数的随机,1个符号的随机),然后利用switch输出不同符号之间加减乘除的式子。之后加入了分数的运算,然后出现了设计时的第一个问题,分数不是一个参数,导致原本的输出语句没办法输出a+b=这样的式子,于是我想到了加入更多的case,来将分数的计算加入进去,但这样就出现一个问题,case太多,导致了程序复杂化,我还没有想到更好的解决方法。最后,在测试时我发现分数并不是真分数,并且可以进行约分,我又将对分数的化简与分母比分子大这样的限制加入到程序中,变成现在的程序。

      这个程序还不不算很完善,还有很多能够增加和改进的地方,希望以后等我的能力提升了可以设计出更实用,更简洁的程序出来。

  • 相关阅读:
    English 2
    速算24点
    心理学1
    从微服务到函数式编程
    034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
    033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结
    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
    031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级
    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符
    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符
  • 原文地址:https://www.cnblogs.com/dudu-27/p/5283718.html
Copyright © 2011-2022 走看看