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太多,导致了程序复杂化,我还没有想到更好的解决方法。最后,在测试时我发现分数并不是真分数,并且可以进行约分,我又将对分数的化简与分母比分子大这样的限制加入到程序中,变成现在的程序。

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

  • 相关阅读:
    过滤器(Filter)
    DBUtils结果集处理器介绍
    Tomcat配置连接c3p0连接池
    JdbcUtils
    数据库连接池
    JDBC处理事务
    JDBC入门(5)--- 时间类型、大数据
    JDBC入门(4)--- 批处理
    JDBC入门(3)--- PrepareStatement
    JDBC入门(2)--- ResultSet之滚动结果集
  • 原文地址:https://www.cnblogs.com/dudu-27/p/5283718.html
Copyright © 2011-2022 走看看