码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-19 20:06:59      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

一、设计思路

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

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

二、程序代码

  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级

 

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

标签:

原文地址:http://www.cnblogs.com/caomeina/p/4351363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!