zoukankan      html  css  js  c++  java
  • 随机生成30道四则运算题3—用户可以参与答题,并且有错误提示和计数

    一、题目要求:

         让程序能接受用户输入答案,并判定对错。最后给出总共对/错的数量。

    二、设计思路;

        在二的基础上添加答题并判断正误和计数的功能。

    三、程序源代码  

      1 // yunsuan3.cpp : Defines the entry point for the console application.
      2 //
      3 
      4 
      5 
      6 #include "stdafx.h"
      7 #include <iostream>
      8 #include <math.h>
      9 #include <time.h>
     10 using namespace std;
     11 int c1=0,c2=0;
     12 int display1(int k,int x,int y,int m,int shuzhi)     //含有加减乘除法
     13 {
     14     double jieguo;
     15     if(m==0)
     16     {
     17         cout<<"("<<k<<")"<<x<<" + "<<y<<" = ";
     18         cin>>jieguo;
     19         if(jieguo==x+y)
     20         {
     21             cout<<"    回答正确!"<<endl;
     22             return c1++;
     23         }
     24         else
     25         {
     26             cout<<"    回答错误!"<<endl;
     27             return c2++;
     28         }
     29     }
     30     
     31     if(m==1)
     32     {
     33         cout<<"("<<k<<")"<<x<<" - "<<y<<" = ";
     34         cin>>jieguo;
     35         if(jieguo==x-y)
     36         {
     37             cout<<"    回答正确!"<<endl;
     38             return c1++;
     39         }
     40         else
     41         {
     42             cout<<"    回答错误!"<<endl;
     43             return c2++;
     44         }
     45     }
     46     if(m==2)
     47     {
     48         cout<<"("<<k<<")"<<x<<" x "<<y<<" = ";
     49         cin>>jieguo;
     50         if(jieguo==x*y)
     51         {
     52             cout<<"    回答正确!"<<endl;
     53             return c1++;
     54         }
     55         else
     56         {
     57             cout<<"    回答错误!"<<endl;
     58             return c2++;
     59         }
     60     }
     61     if(m==3)
     62     {
     63         if(y==0)
     64         {
     65             do
     66             {
     67                 while(y!=0)
     68                 {
     69                     y=rand()%(shuzhi+1);
     70                 }
     71             }while( y==0 );
     72         }
     73         else
     74         {
     75             cout<<"("<<k<<")"<<x<<" / "<<y<<" = ";
     76             cin>>jieguo;
     77             if(jieguo==x*y)
     78             {
     79                 cout<<"    回答正确!"<<endl;
     80                 return c1++;
     81             }
     82             else
     83             {
     84                 cout<<"    回答错误!"<<endl;
     85                 return c2++;
     86             }
     87         }
     88     }
     89 }
     90 
     91 int display2(int k,int x,int y,int m,int shuzhi)     //含有加减
     92 {
     93     double jieguo;
     94     if(m==0)
     95     {
     96         cout<<"("<<k<<")"<<x<<" + "<<y<<" = ";
     97         cin>>jieguo;
     98         if(jieguo==x+y)
     99         {
    100             cout<<"    回答正确!"<<endl;
    101             return c1++;
    102         }
    103         else
    104         {
    105             cout<<"    回答错误!"<<endl;
    106             return c2++;
    107         }
    108     }
    109     if(m==1)
    110     {
    111         cout<<"("<<k<<")"<<x<<" + "<<y<<" = ";
    112         cin>>jieguo;
    113         if(jieguo==x+y)
    114         {
    115             cout<<"    回答正确!"<<endl;
    116             return c1++;
    117         }
    118         else
    119         {
    120             cout<<"    回答错误!"<<endl;
    121             return c2++;
    122         }
    123     }
    124 }
    125 int main()
    126 {
    127     int number;     //number表示订制的题的份数
    128     int xuanze;     //xuanze用来做判断是否有乘除法,0表示无,1表示有
    129     int shuzhi;     //shuzhi表示参与运算的数值范围,比如0-100等
    130     int fushu;      //fushu表示运算结果是否存在负数的情况,0表示无,1表示有
    131     //在自然数中,只有减法结果可能有负数存在
    132     int yushu;      //fushu表示运算结果有无余数,0表示无,1表示有
    133     int geshu;      //geshu表示每行打印的运算式的个数
    134     int a[30],b[30],m1[30],m2[30];
    135     
    136     srand( (unsigned)time( NULL ) ); 
    137     cout<<endl;
    138     cout<<"                         $ 欢迎来到答题订制系统 $"<<endl;
    139     cout<<endl;
    140     cout<<"     在负数和余数的判断时,0表示无,1表示有,其他数值则默认为1"<<endl;
    141     cout<<"Start:"<<endl;
    142     cout<<"     请输入订制的份数:";
    143     cin>>number;
    144     cout<<endl;
    145     cout<<"     请输入数值范围:0-";
    146     cin>>shuzhi;
    147     cout<<endl;
    148     for(int k=1;k<=number;k++)
    149     {
    150         cout<<"-----------------------------------------------------------------------------"<<endl;
    151         cout<<endl;
    152         cout<<""<<k<<"份题如下:"<<endl;
    153         cout<<"*****************************************************************************"<<endl;
    154         cout<<endl;
    155         cout<<"                 是否含有乘除法(0表示无,1表示有),请选择:                  "<<endl;
    156         cout<<endl;
    157         cout<<"*****************************************************************************"<<endl;
    158         cout<<endl;       
    159         cout<<"我的选择:";
    160         cin>>xuanze;      
    161         cout<<endl;
    162         if(xuanze==1)
    163         {
    164             cout<<"*****************************************************************************"<<endl;
    165             cout<<endl;
    166             cout<<"          1 是否含可能有负数的结果(0表示无,1表示有),请输入你的选择:"<<endl;
    167             cout<<endl;
    168             cout<<endl;
    169             cout<<"          2 是否含可能有余数的结果(0表示无,1表示有),请输入你的选择:"<<endl;
    170             cout<<endl;
    171             cout<<"*****************************************************************************"<<endl;
    172             cout<<endl;
    173             cout<<"对1的选择(0/1):";
    174             cin>>fushu;
    175             cout<<endl;
    176             cout<<"对2的选择(0/1):";
    177             cin>>yushu;
    178             cout<<endl;
    179             cout<<"-----------------------------------------------------------------------------"<<endl;
    180             cout<<endl;
    181             for(int i=1;i<=30;i++)
    182             {
    183                 a[i]=rand()%(shuzhi+1);
    184                 b[i]=rand()%(shuzhi+1);
    185                 m1[i]=rand()%4;
    186 
    187                 for(int j=1;j<=i-1;j++)
    188                 {
    189                     if(a[i]==a[j]&&b[i]==b[j]&&m1[i]==m1[j])
    190                     {
    191                         do
    192                         {
    193                             a[i]=rand()%(shuzhi+1);
    194                              b[i]=rand()%(shuzhi+1);
    195                         }while(a[i]==a[j]&&b[i]==b[j]&&m1[i]==m1[j]);
    196                     }
    197                 }
    198                 if((fushu==1&&m1[i]==1)||(yushu==1&&m1[i]==3))
    199                 {
    200                     display1(i,a[i],b[i],m1[i],shuzhi);
    201                 }
    202                 else if(yushu==0&&m1[i]==3)
    203                 {
    204                     if(a[i]%b[i]==0)
    205                     {
    206                         display1(i,a[i],b[i],m1[i],shuzhi);
    207                     }
    208                     else
    209                     {
    210                         do
    211                         {
    212                             a[i]=rand()%(shuzhi+1);
    213                             b[i]=rand()%(shuzhi+1);
    214                             while(b[i] == 0)
    215                             {
    216                                 b[i]=rand()%(shuzhi+1);
    217                             }
    218                         }while( a[i]%b[i]!=0 );
    219                             display1(i,a[i],b[i],m1[i],shuzhi);
    220                     }
    221                 }
    222                 else if(fushu==0&&m1[i]==1)
    223                 {
    224                     if(a[i]>=b[i])
    225                     {
    226                         display1(i,a[i],b[i],m1[i],shuzhi);
    227                     }
    228                     else
    229                     {
    230                         do
    231                         {
    232                             a[i]=rand()%(shuzhi+1);
    233                             b[i]=rand()%(shuzhi+1);
    234                         }while(a[i]<b[i]);
    235                             display1(i,a[i],b[i],m1[i],shuzhi);
    236                     }
    237                 }
    238                 else 
    239                 {
    240                     display1(i,a[i],b[i],m1[i],shuzhi);
    241                 }
    242                 if(i%geshu==0)
    243                 {
    244                     cout<<endl;
    245                 }
    246                 if(i==30)
    247                 {
    248                     cout<<endl;
    249                 }
    250             }                    
    251         }
    252         else if(xuanze==0)         //没有乘除法存在,只需要判断有无负数结果产生
    253         {
    254             cout<<"*****************************************************************************"<<endl;
    255             cout<<endl;
    256             cout<<"          是否含可能有负数的结果(0表示无,1表示有),请输入你的选择:"<<endl;
    257             cout<<endl;
    258             cout<<"*****************************************************************************"<<endl;
    259             cout<<endl;
    260             cout<<"我的选择:";
    261             cin>>fushu;
    262             cout<<"-----------------------------------------------------------------------------"<<endl;
    263             cout<<endl;
    264             for(int i=1;i<=30;i++)
    265             {
    266                 a[i]=rand()%(shuzhi+1);
    267                 b[i]=rand()%(shuzhi+1);
    268                 m2[i]=rand()%2;
    269 
    270                 for(int j=1;j<=i-1;j++)
    271                 {
    272                     if(a[i]==a[j]&&b[i]==b[j]&&m2[i]==m2[j])
    273                     {
    274                         do
    275                         {
    276                             a[i]=rand()%(shuzhi+1);
    277                              b[i]=rand()%(shuzhi+1);
    278                         }while(a[i]==a[j]&&b[i]==b[j]&&m2[i]==m2[j]);
    279                     }
    280                 }
    281                 if(fushu==0)
    282                 {
    283                     if(a[i]>=b[i])
    284                     {
    285                         display2(i,a[i],b[i],m2[i],shuzhi);
    286                     }
    287                     else             //当没有负数结果时,应是a>=b,条件不满足时,则系统再随机生成俩随机数,条件满足时进行输出
    288                     {
    289                         do
    290                         {
    291                             a[i]=rand()%(shuzhi+1);
    292                             b[i]=rand()%(shuzhi+1);
    293                         }while(a[i]<b[i]);
    294                         display2(i,a[i],b[i],m2[i],shuzhi);
    295                     }    
    296                 }
    297                 else
    298                 {
    299                     display2(i,a[i],b[i],m2[i],shuzhi);
    300                 }
    301                 if(i%geshu==0)
    302                 {
    303                     cout<<endl;
    304                 }
    305                    if(i==30)
    306                 {
    307                     cout<<endl;
    308                 }
    309             }
    310         }
    311         else
    312         {
    313             cout<<"*****************************************************************************"<<endl;
    314             cout<<endl;
    315             cout<<"                       输入错误,请重新输入!"<<endl;
    316             cout<<endl;
    317             cout<<"*****************************************************************************"<<endl;
    318             cout<<endl;
    319             k=k-1;
    320         }
    321         cout<<endl;
    322         cout<<"正确题数为:"<<c1<<"	"<<"错误题数为:"<<c2<<endl;
    323         cout<<"-----------------------------------------------------------------------------"<<endl;
    324         cout<<endl;
    325         cout<<"--------------$----------------$---------------$--------------$--------------"<<endl;
    326     }
    327     cout<<endl;
    328     cout<<"                $ 感谢您使用答题订制系统,欢迎下次再来 $"<<endl;
    329     cout<<endl;
    330 
    331     return 0;
    332 }

     

    四、结果截图

       

           

           

            

    四、总结与心得体会

     

    这次试验是在项目二的基础上进一步完善的答题系统,在按照用户的难度需求随机生成的30道题目中,用户答题时,会对结果的正误做出判断与提示,用户可以清楚地看到;在答题结束时,会对用户答题的结果做出统计,便于用户掌握信息。

    在完成的实验的过程中,基本没什么问题,就是在代码的格式上有点不美观,完善后就是上面所展示的。

    五、项目进展记录 

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

           一、项目计划总结:

                                                                          表1  周活动总结表

                                                  姓名:黄亚萍                                    日期:2015.03.17

    日期/任务

    听课

    编写程序

    阅读课本

    准备考试

     

    总结

    日总计

    周二 3.17

    90

             

    90

    周三 3.18

                 

    周四 3.19

     

    105

         

    30

    135

    周五 3.20

    90

       

           

    90

    周六 3.21

                 

    周日 3.22

                 

    周总计

    180

    105

         

    30

    315

     

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

     

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

     

    总计

    315

               

    平均

    45

               

    最大

    135

               

    最小

    0

               

     

                              以前每个周的累计时间

     

    总计

                 

    平均

                 

    最大

                 

    最小

                 

     

                        二、时间记录日志:

                                                                       表2  时间记录日志

                                                      学生  黄亚萍                      日期  2015.03.17          

                                                      教师  王建民                      课程  软件工程            

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/19

    1634

    1819

     

    105

    编程、调试

     
     

    1840

    1910

     

    30

    总结工作

     

     

                      三、缺陷记录日志:

     

                                                                              表3  缺陷记录日志         

                                      学  生      黄亚萍                 

                                      日  期     2015.03.17                    

                                      教  员      王建民                 

                                      程序号        3                    

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/19

    1

    漏写转行字符

    编辑代码

    代码调试

    1733

     

    描述:漏写转行字符,使得四则运算生成式打印的格式杂乱无章,修改之后得出预期的结果。

     

     

     

  • 相关阅读:
    旗鱼移动Android开发规范
    02_Java基本语法_5
    02_Java基本语法_4
    02_Java基本语法_3
    Promise的API-all
    Promise.reject方法
    Promise的API-resolve
    Promise的API-构造函数-then-catch
    fs模块封装
    AJAX请求
  • 原文地址:https://www.cnblogs.com/mudanhuakai/p/4351325.html
Copyright © 2011-2022 走看看