第四次作业:四则运算

 作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

 我的github地址:https://github.com/yellowjy/study

一、题目要求:

像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行软件

具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:

23 - 3 * 4 = 11

二、个人软件过程耗时估计与统计表

 

 


 


三、运行结果及主要代码

//产生必要的随机数

a = rand() % 99+1;//随机数a

         b = rand() % 99+1;//随机数b

         c = rand() % 99+1;//随机数c

         o1 = rand() % 4+1;//随机产生第1个运算符

         o2 = rand() % 4+1;//随机产生第2个运算符

//main函数主要内容

 1  printf("\n\n\n请输入你想要获取的题目数量:");
 2 
 3          scanf("%d",&number);
 4 
 5          for(i=0;i<number;i++)
 6 
 7          {
 8 
 9                    o1 = rand() % 4+1;//随机产生第1个运算符
10 
11                    switch(o1)
12 
13                    {
14 
15                    case 1:
16 
17                             FistAdd();
18 
19                             break;                                  
20 
21                    case 2:
22 
23                             FistSubtract();
24 
25                             break;
26 
27                    case 3:
28 
29                             FistMultiply();
30 
31                             break;
32 
33                    case 4:
34 
35                             FistDivide();
36 
37                             break;      
38 
39                    }
40 
41          }

 


 

//函数FistAdd(),其他函数也是这个思路

  1 int FistAdd(){
  2 
  3          int a,b,c;
  4 
  5          a = rand() % 99+1;//随机数a
  6 
  7          b = rand() % 99+1;//随机数b
  8 
  9          c = rand() % 99+1;//随机数c
 10 
 11         
 12 
 13          o2 = rand() % 4+1;//随机产生第2个运算符
 14 
 15          //printf("%d,%d,%d",a,b,c);/////////////////
 16 
 17          switch(o2)
 18 
 19          {
 20 
 21          case 1://+
 22 
 23                    printf("\n请计算\n");
 24 
 25                    printf("%d + %d + %d= ",a,b,c);
 26 
 27                    scanf("%d",&useranswser);
 28 
 29                    answer=a+b+c;
 30 
 31                    if(useranswser==answer)
 32 
 33                    {                  
 34 
 35                             CorrectAnswer++;
 36 
 37                             printf("你已经答对了%d道题目\n",CorrectAnswer);
 38 
 39                    }
 40 
 41                    else
 42 
 43                    {
 44 
 45                             printf("回答错误,正确答案是:%d\n",answer);                                            
 46 
 47                    }
 48 
 49                    break;
 50 
 51                   
 52 
 53                   
 54 
 55          case 2://-                            
 56 
 57                    if((a+b)<c)
 58 
 59                    {
 60 
 61                             printf("\n请计算\n");
 62 
 63                             printf("%d + %d - %d= ",a,c,b);
 64 
 65                             scanf("%d",&useranswser);
 66 
 67                             answer=a+c-b;
 68 
 69                             if(useranswser==answer)
 70 
 71                             {                   
 72 
 73                                      CorrectAnswer++;
 74 
 75                                      printf("你已经答对了%d道题目\n",CorrectAnswer);
 76 
 77                             }
 78 
 79                             else
 80 
 81                             {
 82 
 83                                      printf("回答错误,正确答案是:%d\n",answer);
 84 
 85                             } ;
 86 
 87                    }
 88 
 89                    else
 90 
 91                    {
 92 
 93                             printf("\n请计算\n");
 94 
 95                             printf("%d + %d - %d= ",a,b,c);
 96 
 97                             scanf("%d",&useranswser);
 98 
 99                             answer=a+b-c;
100 
101                             if(useranswser==answer)
102 
103                             {                   
104 
105                                      CorrectAnswer++;
106 
107                                      printf("你已经答对了%d道题目\n",CorrectAnswer);
108 
109                             }
110 
111                             else
112 
113                             {
114 
115                                      printf("回答错误,正确答案是:%d\n",answer);
116 
117                             }
118 
119                    }
120 
121                    break;
122 
123                   
124 
125          case 3:
126 
127                    printf("\n请计算\n");
128 
129                    printf("%d + %d * %d= ",a,b,c);
130 
131                    scanf("%d",&useranswser);
132 
133                    answer=a+b*c;
134 
135                    if(useranswser==answer)
136 
137                    {                   
138 
139                             CorrectAnswer++;
140 
141                             printf("你已经答对了%d道题目\n",CorrectAnswer);                             
142 
143                    }
144 
145                    else
146 
147                    {
148 
149                             printf("回答错误,正确答案是:%d\n",answer);
150 
151                            
152 
153                    }
154 
155                    break;
156 
157          case 4:
158 
159                    printf("\n请计算(小数点后保留两位有效小数)\n");
160 
161                    printf("%d + %d  / %d= ",a,b,c);
162 
163                    scanf("%lf",&divideuseranswser);
164 
165                    divideanswer=(float)a+(float)b/c;
166 
167                    if(divideuseranswser==divideanswer)
168 
169                    {  
170 
171                             CorrectAnswer++;
172 
173                             printf("你已经答对了%d道题目\n",CorrectAnswer);
174 
175                    }
176 
177                    else
178 
179                    {
180 
181                             printf("回答错误,正确答案是:%0.2f\n",divideanswer);
182 
183                    }
184 
185                    break;
186 
187          }
188 
189 }

 


四、实验截图

 


 

 

五、总结

在这次作业中,我是构思比较清晰的,通过判断第一个运算符的类型,采用函数构造,让代码比较简洁。但在这次作业的实现过程,也遇到了不少麻烦,一是控制结果大于0,在含除法,减法的算式中都要进行修改操作。二是浮点数的比较以及表示。

作业做了挺久的,感觉c语言忘得差不多了,也要提高自己专注力。

posted on 2018-10-15 13:01  kenda_yellow  阅读(345)  评论(2编辑  收藏  举报