zoukankan      html  css  js  c++  java
  • 四则运算(3)--答题小系统

    一、实验题目

    在之前的基础上做一个小答题系统,要求:

    1.可以判断对错;

    2.可以统计做对的和做错的个数。

    二、设计思路

    判断对错就是将用户输入的数和正确的值相比较,正确输出√,错误输出×;

    统计个数就是设置两个全局变量,让它去统计对错的个数。

    三、源代码

      1 #include "stdio.h"
      2 #include "stdlib.h"
      3 #include "time.h"
      4 int correct=0;//声明全局变量correct
      5 int wrong=0;//声明全局变量wrong
      6 int Add(int num1,int num2)
      7 {
      8     int uresult,cresult;
      9     scanf("%d",&uresult);
     10     cresult=num1+num2;
     11     if(cresult==uresult)
     12     {
     13         printf("");
     14         correct++;
     15     }
     16     else
     17     {
     18         printf("	×");
     19         wrong++;
     20     }
     21     return 0;
     22 }
     23 int Sub(int num1,int num2)
     24 {
     25     int uresult,cresult;
     26     scanf("%d",&uresult);
     27     cresult=num1-num2;
     28     if(cresult==uresult)
     29     {
     30         printf("");
     31         correct++;
     32     }
     33     else
     34     {
     35         printf("	×");
     36         wrong++;
     37     }
     38     return 0;
     39 }
     40 int Mult(int num1,int num2)
     41 {
     42     int uresult,cresult;
     43     scanf("%d",&uresult);
     44     cresult=num1*num2;
     45     if(cresult==uresult)
     46     {
     47         printf("");
     48         correct++;
     49     }
     50     else
     51     {
     52         printf("	×");
     53         wrong++;
     54     }
     55     return 0;
     56 }
     57 int Divi(int num1,int num2)
     58 {
     59     double uresult,cresult;
     60     scanf("%g",&uresult);
     61     cresult=num1/num2;    //取整
     62     if(cresult==uresult)
     63     {
     64         printf("");
     65         correct++;
     66     }
     67     else
     68     {
     69         printf("	×");
     70         wrong++;
     71     }
     72     return 0;
     73 }
     74 int SetQuestion(int cheng,int number,int line,int plural,int scope,int konghang)
     75 {
     76     int num1,num2,oper,i;
     77     srand(time(NULL));                //i为循环次数
     78     printf("我们提供一下功能:                  
    ");
     79     printf("    1.题目的数值范围(暂不支持小数)
    ");
     80     printf("    2.题目的数量                    
    ");
     81     printf("    3.打印时每行题的数量            
    ");
     82     printf("    4.答案中会不会出现负数的结果    
    ");
     83     printf("    5.题目中是否会出现乘除运算      
    ");
     84     printf("    6.打印时每行的间隔              
    ");
     85     printf("请输入数值范围:");
     86     scanf("%d",&scope);
     87     printf("请选择出题数量:");
     88     scanf("%d",&number);                                   //oper为题目数量
     89     printf("请输入每行题的数量:");
     90     scanf("%d",&line);                                     //line为每行题的数量
     91     printf("答案是否有负数(1为有,0为没有):");
     92     scanf("%d",&plural);                                   //plural是否是负数
     93     while(plural!=0 && plural!=1)                          //判断用户是否按要求输入
     94      {
     95          printf("sorry!输入错误,请按要求输入:");
     96          scanf("%d",&plural);
     97      }
     98 
     99     printf("是否有乘除运算(1为有,0为没有):");
    100     scanf("%d",&cheng);
    101     while(cheng!=0 && cheng!=1)                          //判断用户是否按要求输入
    102      {
    103          printf("sorry!输入错误,请按要求输入:");
    104          scanf("%d",&cheng);
    105      }
    106     printf("中间有几个空行:");
    107     scanf("%d",&konghang);
    108     if(cheng==1)
    109     {
    110         if(plural==0)
    111         {
    112             for(i=1;i<=number;i++)
    113             {
    114                 num1=rand()%scope;
    115                 num2=rand()%scope;
    116                 oper=rand()%4;
    117                 printf("(%d)",i);
    118                 switch(oper)
    119                 {
    120                 case 0:
    121                     printf("%d+%d=	",num1,num2);
    122                     break;
    123                 case 1:
    124                     if(num1>=num2)
    125                         printf("%d-%d=	",num1,num2);
    126                     else
    127                         printf("%d-%d=	",num2,num1);
    128                     break;
    129                 case 2:
    130                     printf("%d*%d=	",num1,num2);
    131                     break;    
    132                 case 3:
    133                     if(num2==0)
    134                         printf("%d/%d=	",num2,num1);
    135                     else
    136                         printf("%d/%d=	",num1,num2);
    137                     break;
    138                 default:
    139                     {
    140                         printf("出错啦~~~");
    141                     }
    142                 }
    143                 if(i%line==0)
    144                 {
    145                     for(int p=1;p<=konghang;p++)
    146                     {
    147                          printf("
    ");
    148                     }
    149                 }
    150             }
    151             
    152         }
    153     else
    154     {
    155         for(i=1;i<=number;i++)
    156         {
    157             num1=rand()%scope;
    158             num2=rand()%scope;
    159             oper=rand()%4;
    160             printf("(%d)",i);
    161             switch(oper)
    162             {
    163             case 0:
    164                     printf("%d+%d=	",num1,num2);
    165                     break;
    166                 case 1:
    167                     printf("%d-%d=	",num1,num2);
    168                     break;
    169                 case 2:
    170                     printf("%d*%d=	",num1,num2);
    171                     break;    
    172                 case 3:
    173                     if(num2==0)
    174                         printf("%d/%d=	",num2,num1);
    175                     else
    176                         printf("%d/%d=	",num1,num2);
    177                     break;
    178             default:
    179                     {
    180                         printf("出错啦~~~");
    181                     }
    182             }
    183             if(i%line==0)
    184                 {
    185                     for(int p=1;p<=konghang;p++)
    186                     {
    187                          printf("
    ");
    188                     }
    189                 }
    190         }
    191     }
    192     
    193     }
    194     else
    195     {
    196         if(plural==0)
    197         {
    198         for(i=1;i<=number;i++)
    199         {
    200             num1=rand()%scope;
    201             num2=rand()%scope;
    202             oper=rand()%2;
    203             printf("(%d)",i);
    204             switch(oper)
    205             {
    206             case 0:
    207                 printf("%d+%d=	",num1,num2);
    208                 break;
    209             case 1:
    210                 if(num1>=num2)
    211                     printf("%d-%d=	",num1,num2);
    212                 else
    213                     printf("%d-%d=	",num2,num1);
    214                 break;
    215             default:
    216                     {
    217                         printf("出错啦~~~");
    218                     }
    219             }
    220             if(i%line==0)
    221                 {
    222                     for(int p=1;p<=konghang;p++)
    223                     {
    224                          printf("
    ");
    225                     }
    226                 }
    227         }
    228         
    229     }
    230     else
    231     {
    232         for(i=1;i<=number;i++)
    233         {
    234             num1=rand()%scope;
    235             num2=rand()%scope;
    236             oper=rand()%2;
    237             printf("(%d)",i);
    238             switch(oper)
    239             {
    240             case 0:
    241                 printf("%d+%d=	",num1,num2);
    242                 break;
    243             case 1:
    244                 printf("%d-%d=	",num1,num2);
    245                 break;
    246             default:
    247                     {
    248                         printf("出错啦~~~");
    249                     }
    250             }
    251                 if(i%line==0)
    252                 {
    253                     for(int p=1;p<=konghang;p++)
    254                     {
    255                          printf("
    ");
    256                     }
    257                 }
    258         }
    259     }
    260     
    261     }
    262     printf("
    ");
    263     
    264     return 0;
    265 }
    266 
    267 int AnswerQuestion(int cheng,int number,int line,int plural,int scope,int konghang){
    268     int num1,num2,oper,i;
    269     srand(time(NULL));
    270     //a,b为运算数,c为选择哪个运算符,i为循环次数
    271     printf("我们提供一下功能:                  
    ");
    272     printf("    1.题目的数值范围(暂不支持小数)
    ");
    273     printf("    2.题目的数量                    
    ");
    274     printf("    3.答案中会不会出现负数的结果    
    ");
    275     printf("    4.题目中是否会出现乘除运算      
    ");
    276     printf("    5.打印时每行的间隔              
    ");
    277     printf("请输入数值范围:");
    278     scanf("%d",&scope);
    279     printf("请选择出题数量:");
    280     scanf("%d",&number);                                   
    281     printf("答案是否有负数(1为有,0为没有):");
    282     scanf("%d",&plural);                                   //plural是否是负数
    283     while(plural!=0 && plural!=1)                          //判断用户是否按要求输入
    284      {
    285          printf("sorry!输入错误,请按要求输入:");
    286          scanf("%d",&plural);
    287      }
    288 
    289     printf("是否有乘除运算(1为有,0为没有):");
    290     scanf("%d",&cheng);
    291     while(cheng!=0 && cheng!=1)                          //判断用户是否按要求输入
    292      {
    293          printf("sorry!输入错误,请按要求输入:");
    294          scanf("%d",&cheng);
    295      }
    296     printf("中间有几个空行:");
    297     scanf("%d",&konghang);
    298     if(cheng==1)
    299     {
    300         if(plural==0)
    301         {
    302             for(i=1;i<=number;i++)
    303             {
    304                 num1=rand()%scope;
    305                 num2=rand()%scope;
    306                 oper=rand()%4;
    307                 printf("(%d)",i);
    308                 switch(oper)
    309                 {
    310                 case 0:
    311                     printf("%d+%d=",num1,num2);
    312                     Add(num1,num2);
    313                     break;
    314                 case 1:
    315                     if(num1>=num2)
    316                     {
    317                         printf("%d-%d=",num1,num2);
    318                         Sub(num1,num2);
    319                     }
    320                     else
    321                     {
    322                         printf("%d-%d=",num2,num1);
    323                         Sub(num2,num1);
    324                     }
    325                     break;
    326                 case 2:
    327                     printf("%d*%d=",num1,num2);
    328                     Mult(num1,num2);
    329                     break;    
    330                 case 3:
    331                     if(num2==0)
    332                     {
    333                         printf("%d/%d=",num2,num1);
    334                         Divi(num2,num1);
    335                     }
    336                     else
    337                     {
    338                         printf("%d/%d=",num1,num2);
    339                         Divi(num1,num2);
    340                     }
    341                     break;
    342                 default:
    343                     {
    344                         printf("出错啦~~~");
    345                     }
    346                 }
    347                 for(int p=1;p<=konghang;p++)
    348                 {
    349                      printf("
    ");
    350                 }
    351             }
    352             
    353         }
    354     else
    355     {
    356         for(i=1;i<=number;i++)
    357         {
    358             num1=rand()%scope;
    359             num2=rand()%scope;
    360             oper=rand()%4;
    361             printf("(%d)",i);
    362             switch(oper)
    363             {
    364             case 0:
    365                     printf("%d+%d=",num1,num2);
    366                     Add(num1,num2);
    367                     break;
    368                 case 1:
    369                     printf("%d-%d=",num1,num2);
    370                     Sub(num1,num2);
    371                     break;
    372                 case 2:
    373                     printf("%d*%d=",num1,num2);
    374                     Mult(num1,num2);
    375                     break;    
    376                 case 3:
    377                     if(num2==0)
    378                     {
    379                         printf("%d/%d=",num2,num1);
    380                         Divi(num2,num1);
    381                     }
    382                     else
    383                     {
    384                         printf("%d/%d=",num1,num2);
    385                         Divi(num2,num1);
    386                     }
    387                     break;
    388             default:
    389                     {
    390                         printf("出错啦~~~");
    391                     }
    392             }
    393         
    394             for(int p=1;p<=konghang;p++)
    395             {
    396                  printf("
    ");
    397             }
    398         }
    399     }
    400     
    401     }
    402     else
    403     {
    404         if(plural==0)
    405         {
    406         for(i=1;i<=number;i++)
    407         {
    408             num1=rand()%scope;
    409             num2=rand()%scope;
    410             oper=rand()%2;
    411             printf("(%d)",i);
    412             switch(oper)
    413             {
    414             case 0:
    415                 printf("%d+%d=",num1,num2);
    416                 Add(num1,num2);
    417                 break;
    418             case 1:
    419                 if(num1>=num2)
    420                 {
    421                     printf("%d-%d=",num1,num2);
    422                     Sub(num1,num2);
    423                 }
    424                 else
    425                 {
    426                     printf("%d-%d=",num2,num1);
    427                     Sub(num2,num1);
    428                 }
    429                 break;
    430             default:
    431                     {
    432                         printf("出错啦~~~");
    433                     }
    434             }
    435             for(int p=1;p<=konghang;p++)
    436             {
    437                  printf("
    ");
    438             }
    439         }
    440         
    441     }
    442     else
    443     {
    444         for(i=1;i<=number;i++)
    445         {
    446             num1=rand()%scope;
    447             num2=rand()%scope;
    448             oper=rand()%2;
    449             printf("(%d)",i);
    450             switch(oper)
    451             {
    452             case 0:
    453                 printf("%d+%d=",num1,num2);
    454                 Add(num1,num2);
    455                 break;
    456             case 1:
    457                 printf("%d-%d=",num1,num2);
    458                 Sub(num1,num2);
    459                 break;
    460             default:
    461                     {
    462                         printf("出错啦~~~");
    463                     }
    464             }
    465             for(int p=1;p<=konghang;p++)
    466             {
    467                  printf("
    ");
    468             }
    469         }
    470     }
    471     
    472     }
    473     printf("
    ");
    474     
    475     return 0;
    476 }
    477 void menu()
    478 {
    479     printf("       欢迎使用四则运算出题系统     
    ");
    480     printf("          1.    开始出题            
    ");
    481     printf("          2.    开始答题            
    ");
    482     printf("          0.    退出系统            
    ");
    483 }
    484 int main()
    485 {
    486     int cheng,number,line,plural,scope,konghang,percent,a,num;
    487 l1:    menu();
    488     printf("请选择(0-2):");
    489     scanf("%d",&a);
    490     switch(a)
    491     {
    492     case 1:
    493         SetQuestion(cheng,number,line,plural,scope,konghang);
    494         printf("是否继续(1为继续,0为不继续):");
    495         scanf("%d",&num);
    496         if(num==1)
    497             goto l1;
    498         else
    499             printf("欢迎下次使用!
    ");
    500             break;
    501     case 2:
    502         AnswerQuestion(cheng,number,line,plural,scope,konghang);
    503         printf("做对了%d道题
    ",correct);
    504         printf("做错了%d道题
    ",wrong);
    505         percent=correct/(correct+wrong);
    506         if(percent>=6/10)
    507         {
    508             printf("你太棒了!!
    ");
    509         }
    510         else
    511         {
    512             printf("不及格,你要加油啦~~~
    ");
    513         }
    514         printf("是否继续(1为继续,0为不继续):");
    515         scanf("%d",&num);
    516         if(num==1)
    517             goto l1;
    518         else
    519             printf("欢迎下次使用!
    ");
    520             break;
    521     case 0:
    522         printf("欢迎下次使用!
    ");
    523         break;
    524     }
    525 
    526     return 0;
    527 }
    View Code

    四、运行结果

    开始界面:

    五、心得体会

         在原来的基础上进行修改,比直接做简单了许多,自己也有了一定的思路,其实我们自己编写一个大程序时也可以采用这种做法,先从一个个简单的问题开始,逐步变得复杂,就不会没有头绪了;但是我的程序拓展性差,程序有很多功能无法实现。

    六、PSP0表格

    1.项目计划总结:

                                                 周活动总结表

      姓名:袁亚姣                                    日期:3/22

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

     

     

    日总计

    周日

     

     30

     

     

     

     

     30

    周一

     

     

     

     

     

     

     

    周二

     400

     

     20

     

     

     

     420

    周三

     100

     120

     40

     

     

     

     260

    周四

     300

     

     50

     

     

     

     250

    周五

     200

     120

     60

     

     

     

     380

    周六

     

     

     30

     

     

     

     

    周总结

     1000

     270

     200

     

     

     

     1470

      阶段时间和效率                                         周数(上一次周活动表的周数+1):2

                                    不包括上一周在内的累计时间                                                                         

    总计

     1000

     270

     200

     

     

     

     1470

    平均

     250

     90

     40

     

     

     

     245

    最大

     400

     120

     60

     

     

     

     420

    最小

     100

     30

     20

     

     

     

     30

      以前各周的累计时间                                                                                    

    总计

     900

     230

     140

     

     

     

    1270 

    平均

     900

     230

     140

     

     

     

    1270

    最大

     900

     230

     140

     

     

     

    1270

    最小

     900

     230

    140 

     

     

     

    1270

    2.时间记录表:

      学生      袁亚姣                                              日期     2015.03.22   

      教师        王建民                                             课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     15/3/18

    10:30

     12:30

     

     120

     结对开发

     

     15/3/20

     20:00

    22:30

     30

     120

     四则运算(3)

     讨论

    15/3/22

    16:30

    17:00

     

    30

    写博客

     

     

    3.缺陷记录日志:

      

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     15/3/18

     1

     逻辑错误

     编码

     执行

     20min

     

     描述:逻辑错误,数组的题不能出现正确答案,循环搞错了

     15/3/20

     2

     

     编码

     编译

     30min

     

     描述:全局变量的定义放在了主函数中,导致系统不能识别;

  • 相关阅读:
    C#的类,构造函数以及Array阵列的数据填充与绑定
    子菜单显示了,就不想隐藏了
    获取DataTable选择第一行某一列值
    两个dropDownList和一个GridView的选择与显示
    127.0.0.1SQLEXPRESS连接异常
    Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.
    The system cannot find the file specified
    Handler "BlockViewHandler" has a bad module "ManagedPipelineHandler" in its module list
    The Web server is configured to not list the contents of this directory.
    分布式监控系统Zabbix-图形集中展示插件Graphtree安装笔记
  • 原文地址:https://www.cnblogs.com/yuanyajiao/p/4357675.html
Copyright © 2011-2022 走看看