zoukankan      html  css  js  c++  java
  • 第三次作业

                                          组员:寿克霞、宋光能

    题目:

    •   请编写一个能自动生成小学四则运算题目的 “软件”。
    •   让程序能接受用户输入答案,并判定对错。 
    •   最后给出总共 对/错 的数量。

         需求分析

    •  编写小学四则运算测试系统,要求完成两位数的加,减,乘,除四则运算。
    •  能根据用户的输入来选择运算种类,用户输入答案后可以判断正误。
    •  做完一次测试后,用户可以决定是否继续进行下一次运算。        

        扩展功能

               -可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。

        设计

    • 定义变量i,j,a,b,m其中i表示答对的题数,j表示答错的题数,a,b表示随机产生的数,m接收从键盘输入的运算结果。
    •  分别定义加,减,乘,除子函数,出错和正确都有提示。
    •  主函数用switch来实现用户的输入来选择运算种类,并输出答题的数目和正确的题数
    • 函数声明和加、减、乘、除存放在头文件(.h),测试和实现存放在头文件(.cpp)中。
    • 有加法测试功能

         代码实现

    main.cpp(主函数)

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 #include"test.h"
      5 int testadd();
      6 
      7 int i=0,j=0;
      8 
      9 void jia()
     10 {
     11     int a,b,m;
     12     srand(time(NULL));
     13     a=1+rand()%100;
     14     b=1+rand()%100;
     15     printf("%d
    ",a);
     16     printf("%d
    ",b);
     17     printf("a+b=?
    ");
     18     int c=add(a,b);
     19     printf("请输入运算结果
    ");
     20     scanf("%d",&m);
     21     if(m==c)
     22     {
     23         printf("恭喜你答对了
    ");
     24         i++;
     25     }
     26     else
     27     {
     28         printf("你答案有错误
    ");
     29         j++;
     30     }
     31     
     32 }
     33 
     34 void jian()
     35 {
     36     int a,b,m;
     37     srand(time(NULL));
     38     a=1+rand()%100;
     39     b=1+rand()%100;
     40     if(a<b)
     41     {
     42         int t=0;
     43         t=a;a=b;b=t;
     44     }
     45     printf("%d
    ",a);
     46     printf("%d
    ",b);
     47     printf("a-b=?
    ");
     48     int c=subtract(a,b);
     49     printf("请输入运算结果
    ");
     50     scanf("%d",&m);
     51     if(m==c)
     52     {
     53         printf("恭喜你答对了
    ");
     54         i++;
     55     }
     56     else
     57     {
     58         printf("你答案有错误
    ");
     59         j++;
     60     }
     61 }
     62 
     63 void chen()
     64 {
     65     int a,b,m;
     66     srand(time(NULL));
     67     a=1+rand()%20;
     68     b=1+rand()%20;
     69     printf("%d
    ",a);
     70     printf("%d
    ",b);
     71     printf("a*b=?
    ");
     72 
     73     float c=multiply(a,b);
     74 
     75     printf("请输入运算结果
    ");
     76     scanf("%d",&m);
     77     if(m==c)
     78     {
     79         printf("恭喜你答对了
    ");
     80         i++;
     81     }
     82     else
     83     {
     84         printf("你答案有错误
    ");
     85         j++;
     86     }
     87     
     88 }
     89 
     90 void chu()
     91 {
     92     int a,b,m;
     93     srand(time(NULL));
     94     a=1+rand()%100;
     95     b=1+rand()%100;
     96     if(b==0)
     97     {
     98         b=1+rand()%100;
     99     }
    100     if(a<b)
    101     {
    102            int t=0;
    103         t=a;a=b;b=t;
    104     }
    105     while(a%b!=0)
    106     {
    107         a=1+rand()%100;
    108         b=1+rand()%100;
    109     }
    110     printf("%d
    ",a);
    111     printf("%d
    ",b);
    112     printf("a/b=?
    ");
    113 
    114     double c=divide(a,b);
    115 
    116     printf("请输入运算结果
    ");
    117     scanf("%d",&m);
    118     if(m==c)
    119     {
    120         printf("恭喜你答对了
    ");
    121         i++;
    122     }
    123     else
    124     {
    125         printf("你答案有错误
    ");
    126         j++;
    127     }
    128     
    129 }
    130 
    131 int main()
    132 
    133 { 
    134     int m,n=0;
    135     int k;
    136     k=testadd();
    137     if(k==1)
    138     {
    139         printf("恭喜您,加法测试成功!");
    140     }
    141 
    142     while(1)
    143     {
    144 
    145         printf("1.加法运算
    ");
    146         printf("2.减法运算
    ");
    147         printf("3.乘法运算
    ");
    148         printf("4.除法运算
    ");
    149         printf("请选择");
    150         scanf("%d", &m);
    151         switch(m)
    152         {
    153         case 1:jia();break;
    154         case 2:jian();break;
    155         case 3:chen();break;
    156         case 4:chu();break;
    157         }
    158         printf("5.请重新选择
    ");
    159         printf("6.结束
    ");
    160         scanf("%d", &n);
    161         if(n==6) break;
    162     }
    163     printf("你回答题的总数%d和正确的个数%d
    ",i+j,i);
    164     return 0;
    165 }

    test.cpp(四则运算)

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 #include"test.h"
     5 int add(int a,int b)
     6 {
     7     int c=a+b;
     8     return c;
     9 }
    10 
    11 int subtract(int a,int b)
    12 {
    13     int c=a-b;
    14     return c;
    15 }
    16 
    17 float multiply(int a,int b)
    18 {
    19     int c=a*b;
    20     return c;
    21 }
    22 
    23 double divide(int a,int b)
    24 {
    25     int c=a/b;
    26     return c;
    27 }

    test.h(声明加、减、乘、除、函数)

    1 #include<stdio.h>
    2 #include<stdlib.h>
    3 #include<time.h>
    4 
    5 
    6 int add(int a,int b);
    7 int subtract(int a,int b);
    8 float multiply(int a,int b);
    9 double divide(int a,int b);

    cs.cpp(加法测试)

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 #include<assert.h>
     5 #include"test.h"
     6 int testadd()
     7 {
     8     assert(10==add(4,6));
     9     assert(-16==add(4,-20));
    10     return 1;
    11 }
    12     

     四则运算封装成功

    总共 对/错 的数量。

     运行效果如下

     

    两人合作步骤:
    • 我们两人进行分析、讨论,提出自己的观点,然后在源程序的基础上进行了修改,使之更加符合代码风格和设计规范的基本要求;
    • 采用模块化的设计思想,将“计算功能封装”起来。如:函数声明和加、减、乘、除存放在头文件(.h),测试和实现存放在头文件(.cpp)中。
    • 有加法测试功能

    psp耗时

    总结:
    这次的作业对于我们这个小组还是很难的,我们花了大量的时间来分析和设计,还有模块化的设计思想和,
    修改之前的code我们也不知道,编程过程中也遇到很多问题,不过在老师的讲解和上网搜索资料才弄明白,
    编程过程中也遇到很多问题,不过最终还是按时完成作业,有什么不足之处,望老师指点,以后加油!
  • 相关阅读:
    Qt 之 emit、signals、slot的使用
    qt中的 connect 函数
    进程同步:生产者消费者模型 以及解决方法
    Linux 时间 与 定时器
    Linux 环境编程:errno的基本用法
    Linux 环境编程:dirfd参数 有关解析
    Kubernetes设计理念
    禅道升级
    关闭自动更新
    linux下的特殊模式
  • 原文地址:https://www.cnblogs.com/shoukexia/p/4450768.html
Copyright © 2011-2022 走看看