zoukankan      html  css  js  c++  java
  • 软件工程课堂练习--四则运算(三)

    一、设计思路

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

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

    二、程序代码

      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=	",a,b);
     34                                     
     35                                     break;
     36                                 }
     37                             case 3:
     38                                 {
     39                                     printf("-%d+%d=	",a,b);
     40                                     
     41                                     break;
     42                                 }
     43                             case 4: 
     44                                 {
     45                                     printf("%d+(-%d)=	",a,b);
     46                                 
     47                                     break;
     48                                 }
     49                             case 5:
     50                                 {
     51                                     printf("-%d+(-%d)=	",a,b);
     52                                 
     53                                     break;
     54                                 }
     55                             case 6: 
     56                                 {
     57                                     printf("-%d-%d=	",a,b);
     58                                 
     59                                     break;
     60                                 }
     61                             case 7:
     62                                 {
     63                                     printf("%d-(-%d)=	",a,b);
     64                                 
     65                                     break;
     66                                 }
     67                             case 8: 
     68                                 {
     69                                     printf("-%d-(-%d)=	",a,b);
     70                                     
     71                                     break;
     72                                 }
     73                             case 9:
     74                                 {
     75                                     printf("%d*%d=	",a,b);
     76                                 
     77                                     break;}
     78                             case 10: {
     79                                 if (b!=0)
     80                                 {printf("%d/%d=	",a,b);}
     81                                 else
     82                                 {    
     83                                     b=b+1;
     84                                     printf("%d/%d=	",a,b);
     85                                 
     86                                 }
     87                                 break;
     88                                     }
     89                             default:{"输出有误!";}
     90                         }
     91                             if(i%linenum==0)
     92                                 {
     93                                     printf("
    ");
     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=    	",a,b);
    115                                     
    116                                         break;
    117                                     }
    118                                 case 2: 
    119                                     {
    120                                         printf("%d-%d=    	",a,b);
    121                                     
    122                                         break;
    123                                     }
    124                                 case 3: 
    125                                     {
    126                                         printf("%d*%d=    	",a,b);
    127                                     
    128                                         break;
    129                                     }
    130                                 case 4: {
    131                                     if (b!=0)
    132                                     {printf("%d/%d=    	",a,b);}
    133                                     else
    134                                     {    
    135                                         b=b+1;
    136                                         printf("%d/%d=    	",a,b);
    137                                         
    138                                     }
    139                                     break;
    140                                         }
    141                                 default:{printf("输出有误!");}
    142                             }        
    143                         }
    144                         if(i%linenum==0)
    145                         {printf("
    ");}
    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=    	",a,b);
    170                                 
    171                                     break;
    172                                 }
    173                             case 2:
    174                                 {
    175                                     printf("%d-%d=    	",a,b);
    176                                 
    177                                     break;
    178                                 }
    179                             case 3: 
    180                                 {
    181                                     printf("-%d+%d=   	",a,b);
    182                                 
    183                                     break;}
    184                             case 4:
    185                                 {
    186                                     printf("%d+(-%d)= 	",a,b);
    187                                 
    188                                     break;}
    189                             case 5: 
    190                                 {
    191                                     printf("-%d+(-%d)=	",a,b);
    192                                 
    193                                     break;}
    194                             case 6: 
    195                                 {
    196                                     printf("-%d-%d=   	",a,b);
    197                                 
    198                                     break;
    199                                 }
    200                             case 7: 
    201                                 {
    202                                     printf("%d-(-%d)= 	",a,b);
    203                                 
    204                                     break;
    205                                 }
    206                             case 8: 
    207                                 {
    208                                     printf("-%d-(-%d)=	",a,b);
    209                                     
    210                                     break;
    211                                 }
    212                             default:{"输出有误!";}
    213                             }
    214                                 if(i%linenum==0)
    215                                 {
    216                                     printf("
    ");
    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=    	",a,b);
    237                                         
    238                                         break;
    239                                     }
    240                                 case 2: 
    241                                     {
    242                                         printf("%d-%d=    	",a,b);
    243                                     
    244                                         break;
    245                                     }
    246                                 default:{"输出有误!";}
    247                             }    
    248                                 if(i%linenum==0)
    249                                 {
    250                                     printf("
    ");
    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("
    ");
    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("
    ");
    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("
    ");
    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("
    ");
    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("
    ");}
    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("
    ");
    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("
    ");
    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("                         四则运算出题系统                      
    ");
    659     print();
    660     printf("最后计算正确%d道题,错误%d道题
    ",truenum,falsenum);
    661     printf("
    ");
    662     return 0;
    663 }

    三、运行结果

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

    四、心得体会

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

    五、psp0级

    周活动项目计划总结表+时间记录日志+缺陷记录志

    一、项目计划总结:

                                                                                    表1  周活动总结表

                                        姓名:曹美娜                           日期:2015.03.15

    日期/任务

    听课

    编写程序

    阅读课本

    准备考试

    日总计

    周日

    周一 

    300

    45

    345

    周二

    300

    80

    380

    周三

    100

    100

    200

    周四

    300

    115

    60

    475

    周五

    周六

    周总计

     

    总计

    800

    268

    95

    1163

    平均

    800

    268

    95

    1163

    最大

    800

    268

    95

    1163

    最小

    800

    268

    95

    1163

                                                                                             表2  时间记录日志

                                       学生  曹美娜                      日期  2015.03.19           

                                       教师  王建民                      课程  软件工程            

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/18

    10:40

    12:13

    93

    结队编程

    3/19

    17:00

    18:20

    80

    编写四则运算程序

    3/20

    阅读梦断代码

    看书

                                                                                           表3  缺陷记录日志         

                                      学  生      曹美娜                 

                                      日  期     2015.03.19                    

                                      教  员      王建民                 

                                      程序号                             

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/18

    0

    结队编程

    编译

    1分钟

    将输出语句写到内循环中

    3/19

    1

    编程

    编译

    2分钟

    全局变量应用不正确

  • 相关阅读:
    git提交代码
    python把&#DDDDDD转换为中文
    mac下载安装airtest
    mac安装指定版本的python
    python操作habse
    pyspark操作数据库
    Scrapy_redis爬虫项目
    python实现对列表元素是字典的排序
    postman使用
    图书推荐
  • 原文地址:https://www.cnblogs.com/caomeina/p/4351363.html
Copyright © 2011-2022 走看看