软件工程课堂练习--四则运算(三)

一、设计思路

题目:可以答题并判断对错,最后显示做对几道题。

思路:在原来的基础上又添加了用户在系统上可选择直接答题模块,思路上上次的四则运算(二)大致相同,不过又添加了几个函数,经过调用实现操作。

二、程序代码

  1 #include "stdafx.h"
  2 #include "stdio.h"
  3 #include "time.h"
  4 #include "stdlib.h"      //随机器函数头文件
  5
  6 int truenum=0;    int falsenum=0;
  7
  8
  9 void operation(int num,int numvalue,int judear,int judemd,int linenum)
 10 {
 11         switch(judemd)
 12         {
 13                 case 0:{
 14                     int x,y;
 15                     if(judear==0){
 16                     srand((int)time(0));
 17                     for(int i=1;i<=num;i++)          //出题数量
 18                     {
 19
 20                         int a=rand()%numvalue;
 21                         int b=rand()%numvalue;
 22
 23                         x=1+rand()%10;     //随机产生10种类型的题目
 24                         switch (x)
 25                         {
 26                             case 1:
 27                                 {
 28                                     printf("%d+%d=",a,b);
 29                                     break;
 30                                 }
 31                             case 2:
 32                                 {
 33                                     printf("%d-%d=\t",a,b);
 34
 35                                     break;
 36                                 }
 37                             case 3:
 38                                 {
 39                                     printf("-%d+%d=\t",a,b);
 40
 41                                     break;
 42                                 }
 43                             case 4:
 44                                 {
 45                                     printf("%d+(-%d)=\t",a,b);
 46
 47                                     break;
 48                                 }
 49                             case 5:
 50                                 {
 51                                     printf("-%d+(-%d)=\t",a,b);
 52
 53                                     break;
 54                                 }
 55                             case 6:
 56                                 {
 57                                     printf("-%d-%d=\t",a,b);
 58
 59                                     break;
 60                                 }
 61                             case 7:
 62                                 {
 63                                     printf("%d-(-%d)=\t",a,b);
 64
 65                                     break;
 66                                 }
 67                             case 8:
 68                                 {
 69                                     printf("-%d-(-%d)=\t",a,b);
 70
 71                                     break;
 72                                 }
 73                             case 9:
 74                                 {
 75                                     printf("%d*%d=\t",a,b);
 76
 77                                     break;}
 78                             case 10: {
 79                                 if (b!=0)
 80                                 {printf("%d/%d=\t",a,b);}
 81                                 else
 82                                 {
 83                                     b=b+1;
 84                                     printf("%d/%d=\t",a,b);
 85
 86                                 }
 87                                 break;
 88                                     }
 89                             default:{"输出有误!";}
 90                         }
 91                             if(i%linenum==0)
 92                                 {
 93                                     printf("\n");
 94                                 }
 95                     }
 96
 97
 98                     }
 99                     else if(judear==1)
100                     {
101                         srand((int)time(0));
102                         for(int i=1;i<=num;i++)
103                         {
104
105
106                             int a=rand()%numvalue;
107                             int b=rand()%numvalue;
108
109                             y=1+rand()%4;     //随机产生四种不同的题目
110                             switch (y)
111                             {
112                                 case 1:
113                                     {
114                                         printf("%d+%d=    \t",a,b);
115
116                                         break;
117                                     }
118                                 case 2:
119                                     {
120                                         printf("%d-%d=    \t",a,b);
121
122                                         break;
123                                     }
124                                 case 3:
125                                     {
126                                         printf("%d*%d=    \t",a,b);
127
128                                         break;
129                                     }
130                                 case 4: {
131                                     if (b!=0)
132                                     {printf("%d/%d=    \t",a,b);}
133                                     else
134                                     {
135                                         b=b+1;
136                                         printf("%d/%d=    \t",a,b);
137
138                                     }
139                                     break;
140                                         }
141                                 default:{printf("输出有误!");}
142                             }
143                         }
144                         if(i%linenum==0)
145                         {printf("\n");}
146
147                     }
148                     else
149                         printf("出错!");
150                        break;
151                        default:{printf("出错!");}
152                        }
153                 case 1:{
154                     int q,w;
155                     if(judear==0)
156                     {
157                         srand((int)time(0));
158                         for(int i=1;i<=num;i++)
159                         {
160
161                             int a=rand()%numvalue;
162                             int b=rand()%numvalue;
163
164                             q=1+rand()%8;         //随机产生8种不同的题型
165                             switch (q)
166                             {
167                             case 1:
168                                 {
169                                     printf("%d+%d=    \t",a,b);
170
171                                     break;
172                                 }
173                             case 2:
174                                 {
175                                     printf("%d-%d=    \t",a,b);
176
177                                     break;
178                                 }
179                             case 3:
180                                 {
181                                     printf("-%d+%d=   \t",a,b);
182
183                                     break;}
184                             case 4:
185                                 {
186                                     printf("%d+(-%d)= \t",a,b);
187
188                                     break;}
189                             case 5:
190                                 {
191                                     printf("-%d+(-%d)=\t",a,b);
192
193                                     break;}
194                             case 6:
195                                 {
196                                     printf("-%d-%d=   \t",a,b);
197
198                                     break;
199                                 }
200                             case 7:
201                                 {
202                                     printf("%d-(-%d)= \t",a,b);
203
204                                     break;
205                                 }
206                             case 8:
207                                 {
208                                     printf("-%d-(-%d)=\t",a,b);
209
210                                     break;
211                                 }
212                             default:{"输出有误!";}
213                             }
214                                 if(i%linenum==0)
215                                 {
216                                     printf("\n");
217                                 }
218                         }
219
220                     }
221                     else if(judear==1)
222                     {
223                         srand((int)time(0));
224                         for(int i=1;i<=num;i++)
225                         {
226
227
228                             int a=rand()%numvalue;
229                             int b=rand()%numvalue;
230
231                             w=1+rand()%2;     //随机产生2种不同的题型
232                             switch (w)
233                             {
234                                 case 1:
235                                     {
236                                         printf("%d+%d=    \t",a,b);
237
238                                         break;
239                                     }
240                                 case 2:
241                                     {
242                                         printf("%d-%d=    \t",a,b);
243
244                                         break;
245                                     }
246                                 default:{"输出有误!";}
247                             }
248                                 if(i%linenum==0)
249                                 {
250                                     printf("\n");
251                                 }
252                         }
253
254
255                     }
256                     else
257                         printf("出错!");
258                        }
259                     }
260
261
262         }
263
264
265 void add(int num1,int num2)
266 {
267     int userresult,truresult;
268     scanf("%d",&userresult);
269     truresult=num1+num2;
270     if(truresult==userresult)
271     {
272         printf("  √");
273         truenum++;
274     }
275     else if(truresult!=userresult)
276     {
277         printf("  ×");
278         falsenum++;
279     }
280     printf("\n");
281
282 }
283
284 void sub(int num1,int num2)
285 {
286     int userresult,truresult;
287     scanf("%d",&userresult);
288     truresult=num1-num2;
289     if(truresult==userresult)
290     {
291         printf("  √");
292         truenum++;
293     }
294     else if(truresult!=userresult)
295     {
296         printf("  ×");
297         falsenum++;
298     }
299     printf("\n");
300
301 }
302
303 void mul(int num1,int num2)
304 {
305     int userresult,truresult;
306     scanf("%d",&userresult);
307     truresult=num1*num2;
308     if(truresult==userresult)
309     {
310         printf("  √");
311         truenum++;
312     }
313     else if(truresult!=userresult)
314     {
315         printf("  ×");
316         falsenum++;
317     }
318         printf("\n");
319
320 }
321
322 void division(int num1,int num2)
323 {
324     int userresult,truresult;
325     scanf("%d",&userresult);
326     truresult=num1/num2;
327     if(truresult==userresult)
328     {
329         printf("  √");
330         truenum++;
331     }
332     else if(truresult!=userresult)
333     {
334         printf("  ×");
335         falsenum++;
336     }
337
338 }
339
340
341
342
343 void answoperation(int num,int numvalue,int judear,int judemd,int linenum)
344 {
345     switch(judemd)
346         {
347                 case 0:{
348                     int x,y;
349                     if(judear==0){
350                     srand((int)time(0));
351                     for(int i=1;i<=num;i++)          //出题数量
352                     {
353
354                         int a=rand()%numvalue;
355                         int b=rand()%numvalue;
356
357                         x=1+rand()%10;     //随机产生10种类型的题目
358                         switch (x)
359                         {
360                             case 1:
361                                 {
362                                     printf("%d+%d=",a,b);
363                                     add(a,b);
364                                     break;
365                                 }
366                             case 2:
367                                 {
368                                     printf("%d-%d=",a,b);
369                                     sub(a,b);
370                                     break;
371                                 }
372                             case 3:
373                                 {
374                                     printf("-%d+%d=",a,b);
375                                     add(-a,b);
376                                     break;
377                                 }
378                             case 4:
379                                 {
380                                     printf("%d+(-%d)=",a,b);
381                                     add(a,-b);
382                                     break;
383                                 }
384                             case 5:
385                                 {
386                                     printf("-%d+(-%d)=",a,b);
387                                     add(-a,-b);
388                                     break;
389                                 }
390                             case 6:
391                                 {
392                                     printf("-%d-%d=",a,b);
393                                     sub(-a,b);
394                                     break;
395                                 }
396                             case 7:
397                                 {
398                                     printf("%d-(-%d)=",a,b);
399                                     sub(a,-b);
400                                     break;
401                                 }
402                             case 8:
403                                 {
404                                     printf("-%d-(-%d)=",a,b);
405                                     sub(-a,-b);
406                                     break;
407                                 }
408                             case 9:
409                                 {
410                                     printf("%d*%d=",a,b);
411                                     mul(a,b);
412                                     break;}
413                             case 10: {
414                                 if (b!=0)
415                                 {
416                                     printf("%d/%d=",a,b);
417                                     division(a,b);
418                                 }
419                                 else
420                                 {
421                                     b=b+1;
422                                     printf("%d/%d=",a,b);
423                                     division(a,b);
424
425                                 }
426                                 break;
427                                     }
428                             default:{"输出有误!";}
429                         }
430                             if(i%linenum==0)
431                                 {
432                                     printf("\n");
433                                 }
434                     }
435
436
437                     }
438                     else if(judear==1)
439                     {
440                         srand((int)time(0));
441                         for(int i=1;i<=num;i++)
442                         {
443
444
445                             int a=rand()%numvalue;
446                             int b=rand()%numvalue;
447
448                             y=1+rand()%4;     //随机产生四种不同的题目
449                             switch (y)
450                             {
451                                 case 1:
452                                     {
453                                         printf("%d+%d=",a,b);
454                                         add(a,b);
455                                         break;
456                                     }
457                                 case 2:
458                                     {
459                                         printf("%d-%d=",a,b);
460                                         sub(a,b);
461                                         break;
462                                     }
463                                 case 3:
464                                     {
465                                         printf("%d*%d=",a,b);
466                                         mul(a,b);
467
468                                         break;
469                                     }
470                                 case 4: {
471                                     if (b!=0)
472                                     {
473                                         printf("%d/%d=",a,b);
474                                         division(a,b);
475                                     }
476                                     else
477                                     {
478                                         b=b+1;
479                                         printf("%d/%d=",a,b);
480                                         division(a,b);
481                                     }
482                                     break;
483                                         }
484                                 default:{printf("输出有误!");}
485                             }
486                         }
487                         if(i%linenum==0)
488                         {printf("\n");}
489
490                     }
491                     else
492                         printf("出错!");
493
494                        break;
495                        default:{printf("出错!");}
496
497                        }
498                 case 1:{
499                     int q,w;
500                     if(judear==0)
501                     {
502                         srand((int)time(0));
503                         for(int i=1;i<=num;i++)
504                         {
505
506                             int a=rand()%numvalue;
507                             int b=rand()%numvalue;
508
509                             q=1+rand()%8;         //随机产生8种不同的题型
510                             switch (q)
511                             {
512                             case 1:
513                                 {
514                                     printf("%d+%d=",a,b);
515                                     add(a,b);
516                                     break;
517                                 }
518                             case 2:
519                                 {
520                                     printf("%d-%d=",a,b);
521                                     sub(a,b);
522                                     break;
523                                 }
524                             case 3:
525                                 {
526                                     printf("-%d+%d=",a,b);
527                                     add(-a,b);
528                                     break;}
529                             case 4:
530                                 {
531                                     printf("%d+(-%d)=",a,b);
532                                     add(a,-b);
533                                     break;}
534                             case 5:
535                                 {
536                                     printf("-%d+(-%d)=",a,b);
537                                     add(-a,-b);
538                                     break;}
539                             case 6:
540                                 {
541                                     printf("-%d-%d=",a,b);
542                                     sub(-a,b);
543                                     break;
544                                 }
545                             case 7:
546                                 {
547                                     printf("%d-(-%d)=",a,b);
548                                     sub(a,-b);
549                                     break;
550                                 }
551                             case 8:
552                                 {
553                                     printf("-%d-(-%d)=",a,b);
554                                     sub(-a,-b);
555                                     break;
556                                 }
557                             default:{"输出有误!";}
558                             }
559                                 if(i%linenum==0)
560                                 {
561                                     printf("\n");
562                                 }
563                         }
564
565                     }
566                     else if(judear==1)
567                     {
568                         srand((int)time(0));
569                         for(int i=1;i<=num;i++)
570                         {
571
572
573                             int a=rand()%numvalue;
574                             int b=rand()%numvalue;
575
576                             w=1+rand()%2;     //随机产生2种不同的题型
577                             switch (w)
578                             {
579                                 case 1:
580                                     {
581                                         printf("%d+%d=",a,b);
582                                         add(a,b);
583                                         break;
584                                     }
585                                 case 2:
586                                     {
587                                         printf("%d-%d=",a,b);
588                                         sub(a,b);
589                                         break;
590                                     }
591                                 default:{"输出有误!";}
592                             }
593                                 if(i%linenum==0)
594                                 {
595                                     printf("\n");
596                                 }
597                         }
598
599
600                     }
601                     else
602                         printf("出错!");
603                        }
604                     }
605
606
607 }
608
609
610 void print()
611 {
612     int num,numvalue,judear,judemd,linenum,answer;  //变量含义分别为出题数目、数值范围、判断有无负数、判断有无乘除、输出列数、直接作答
613
614     printf("请输入出题数目:");
615     scanf("%d",&num);
616     printf("请输入要输出的题目列数(多少题一组):");
617     scanf("%d",&linenum);
618     printf("加减有无负数?请输入【0/1】表示【是/否】:");
619     scanf("%d",&judear);
620     while(judear!=0 && judear!=1)                          //判断用户是否按要求输入
621     {
622         printf("sorry!输入错误,请按要求输入:");
623         scanf("%d",&judear);
624     }
625     printf("请输入出题的范围绝对值(不考虑小数请输入整数):00-");
626     scanf("%d",&numvalue);
627     printf("出题是否含有乘除法?请输入【0/1】表示【是/否】:");
628     scanf("%d",&judemd);
629     while(judear!=0 && judear!=1)                         //判断用户是否按要求输入
630     {
631         printf("sorry!输入错误,请按要求输入:");
632         scanf("%d",&judemd);
633     }
634     printf("是否要在此系统上直接运算?请输入【0/1】表示【是/否】:");
635         scanf("%d",&answer);
636     while(answer!=0 && answer!=1)                         //判断用户是否按要求输入
637     {
638         printf("sorry!输入错误,请按要求输入:");
639         scanf("%d",&answer);
640     }
641     if (answer==1)
642     {
643         operation(num,numvalue,judear,judemd,linenum);           //调用operation函数
644     }
645     else if(answer==0)
646     {
647        answoperation(num,numvalue,judear,judemd,linenum);                       //调用answ-operation函数
648     }
649
650 }
651
652
653
654
655 int main(int argc, char* argv[])
656 {
657
658     printf("                         四则运算出题系统                      \n");
659     print();
660     printf("最后计算正确%d道题,错误%d道题\n",truenum,falsenum);
661     printf("\n");
662     return 0;
663 }

三、运行结果

其他功能和上篇发的内容相同,此处就不在贴图啦

四、心得体会

由于一开始写四则运算时没想太多,就是想着把这个简简单单的快完成就好了,所以写的程序的扩展性不好,导致后面在一点点的加功能时自己乱,读者看着更乱,虽然功能都实现了,但是代码显得没有条理,所以我想以后再遇到为题时不要先急着下手,要先想想大体思路以及框架,这样在操作起来后就会有条理,思路不乱了程序敲起来也会更顺手吧,对于编程我真的算是一个初学者了,和大伙分享一下我的经验教训吧。

五、psp0级

时间: 2024-08-09 02:34:58

软件工程课堂练习--四则运算(三)的相关文章

软件工程课堂练习四则运算续篇

一.设计思想 根据题目的新要求我做了以下更改 1.为使用户可定制数量以及打印方式,可使用户输入打印方式.数量的参数来进行设置2.参数设置:提示用户是否有乘除法运算,是/否用户可输入[1/0]表示. 提示用户是否有负数参与运算: 提示用户参与运算的数值范围: 提示用户输入出多少道题目: 提示用户输入题目输出列数: 二.源代码 1 #include "stdafx.h" 2 #include "stdio.h" 3 #include "time.h"

软件工程课堂训练———找三个小水王

一.题目描述 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.解决思路 沿用上次消除的思想,定义三个计数器和三个嫌疑水王,比较三个ID,如果不相同,就排除,如果相同,那么计数器加一.嫌疑水王ID都与其它水军ID进行抵消最后剩下的就是三个水王. 三.程序代码 // shuiba.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include &q

软件工程课堂作业(三)——Right-BICEP软件单元测试

一.测试方法:Right-BICEP Right-结果是否正确?B-是否所有的边界条件都是正确的?I-能查一下反向关联吗?C-能用其他手段交叉检查一下结果吗?E-你是否可以强制错误条件发生?P-是否满足性能要求? 二.测试模块:定制打印的题目数 1 //可定制打印的题目数 2 printf("请输入要打印的题目数:"); 3 scanf("%d",&a[0]); 4 while(a[0]<=0) //题目数必须为正数 5 { 6 printf(&quo

软件工程课堂练习--四则运算单元测试

一.测试计划 对系统所要实现的功能以及程序中的函数进行针对性的测试, 1.输入出题数目,看出题数目是否正确: 2.用户首先要选择有无负数参与运算,分别用[0/1]是或否表示,分别输入[0/1]看是否有无负数出现:其次如若输入其他字符或数字,则显示提示要求用户重新输入: 3.然后用户根据提示输入是否有无乘除法,测试方法同上: 4.测试用户在重复多次操作时是否会有重复运算出现: 5.输入出题数目,选择打印列数,看是否存在问题: 二.测试执行及结果 1.输入30道题目测试有30道输出,然后用分别测试了

软件工程课堂作业(三)——软件单元测试:Right-BICEP

方法:Right-BICEP Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? P-是否满足性能要求?

四则运算三+psp0级表格

一.题目 在四则运算二的基础上,选择一个方向进行拓展,我选择的是增加了答题模块 二.设计思路 1.在上次的基础上,增加了答题模块,每出现一道四则运算题目,便提醒输入结果,如果结果错误,就会提示错误 2.生成的是一百以内的数的四则运算,对上次的题目中可以进行范围确定的功能进行了缩减,符合小学生四则运算题目 3.仍然可以选择是否结果可以出现正负数,但是对除法进行了修改,直接不允许不能整除的数据出现,因为不能整除的数据出现后,用户在输入结果时,可能不能判断错误 4.通过count计数确定做对多少题目,

软件工程结对作业 四则运算界面设计

软件工程结对作业 四则运算界面设计 康鑫  PB16060203 娄雨禛  PB16060356 一.项目分析 二.进度规划与完成情况 三.主要函数 四.简单的数据测试 五.编程困惑与心得 原文地址:https://www.cnblogs.com/RainLou/p/8735480.html

?统计学习精要(The Elements of Statistical Learning)?课堂笔记(三)

照例文章第一段跑题,先附上个段子(转载的哦~): I hate CS people. They don't know linear algebra but want to teach projective geometry. They don't know any probability but want to use graphical models. They don't understand stats at all but still do machine learning like c

四则运算三

上次的作业,四则运算三,在以前的基础上又有了新的需求.算术题目中不能产生复数,也就是所算术表达式如果有形如e1-e2的子表达式,那么e1>e2 .而且除法的结果可以表示为真分数或者带分数,每道题目不超过三个运算符.而且一次程序运行的结果不能产生重复的表达式,即任何两道题目不能通过有限次的加法交换和乘法交换变成统一到题目(其实我觉得如果两个表达式需要经过加法交换或者乘法交换变成同一道题,那么这两个题也不是重复的题目呀,因为这还需要涉及到交换律呀!).最重要的是需要连接数据库,计算答案和判定对错.