zoukankan      html  css  js  c++  java
  • 四则运算3

    一、题目要求

      在四则运算2的基础上,增加功能:让程序能接受用户输入答案,并判定对错。最后给出总共对/错的数量。

    二、设计思想

      在上次实验的基础上,增加判断用户输入答案正确与否的判断,最后给出总共对/错的数量。

    三、源程序代码

    
    
      1 #include<iostream.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 int display(int number,int mul,int num,int neg,int remainder)//打印方式控制输出列数
      5 {
      6     int *a=new int[number]; 
      7     int *b=new int[number];
      8     int *c=new int[number];
      9     int m;//控制题目避免重复
     10     int t;//中间变量
     11     int n1=0;//保存正确题目数量
     12     int n2=0;//保存错误题目数量
     13     double result;//用户输入的题目结果
     14     for(int i=0;i<number;i++)//随机两个生成运算操作数
     15     {  
     16         m=1;//初始化
     17         a[i]=rand()%num;
     18         b[i]=rand()%num;
     19         if(mul==0)//没有乘除法
     20         {    
     21             c[i]=rand()%2;//随机生成0-1的数字,分别表示加减
     22         }
     23         else if(mul==1)//有乘除法
     24         {
     25             c[i]=rand()%4;//随机生成0-3的数字,分别表示加减乘
     26         }
     27         for(int j=0;j<i;j++)
     28         {
     29             if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])//比较新生成的操作数与原来的是否相同
     30             {
     31                 i=i-1;
     32                 m=0;
     33             }
     34         }
     35         while(m)//若不同则输出
     36         {
     37             switch(c[i])
     38             {
     39             case 0:
     40                 cout<<a[i]<<"+"<<b[i]<<"="<<endl;
     41                 cout<<"请输入结果:"<<endl;
     42                 cin>>result;
     43                 if(result==a[i]+b[i])
     44                 {
     45                     cout<<"回答正确!"<<endl;
     46                     n1++;
     47                 }
     48                 else
     49                 {
     50                     cout<<"回答错误!"<<endl;
     51                     cout<<"正确结果为:"<<a[i]+b[i]<<endl;
     52                     n2++;
     53                 }
     54                 break;
     55             case 1:
     56                 if(neg==0)//减法没有负数
     57                 {
     58                     if(a[i]<b[i])
     59                     {
     60                         t=a[i];
     61                         a[i]=b[i];
     62                         b[i]=t;
     63                     }
     64                     cout<<a[i]<<"-"<<b[i]<<"="<<endl;
     65                     cout<<"请输入结果:"<<endl;
     66                     cin>>result;
     67                     if(result==a[i]-b[i])
     68                     {
     69                         cout<<"回答正确!"<<endl;
     70                         n1++;
     71                     }
     72                     else
     73                     {
     74                         cout<<"回答错误!"<<endl;
     75                         cout<<"正确结果为:"<<a[i]-b[i]<<endl;
     76                         n2++;
     77                     }
     78                     break;
     79                 }    
     80                 
     81                 else if(neg==1)//减法有负数
     82                 {
     83                     cout<<a[i]<<"-"<<b[i]<<"="<<endl;
     84                     cout<<"请输入结果:"<<endl;
     85                     cin>>result;
     86                     if(result==a[i]-b[i])
     87                     {
     88                         cout<<"回答正确!"<<endl;
     89                         n1++;
     90                     }
     91                     else
     92                     {
     93                         cout<<"回答错误!"<<endl;
     94                         cout<<"正确结果为:"<<a[i]-b[i]<<endl;
     95                         n2++;
     96                     }
     97                     break;
     98                 }
     99                 
    100             case 2:
    101                 cout<<a[i]<<"*"<<b[i]<<"="<<endl;
    102                 cout<<"请输入结果:"<<endl;
    103                 cin>>result;
    104                 if(result==a[i]*b[i])
    105                 {
    106                     cout<<"回答正确!"<<endl;
    107                     n1++;
    108                 }
    109                 else
    110                 {
    111                     cout<<"回答错误!"<<endl;
    112                     cout<<"正确结果为:"<<a[i]*b[i]<<endl;
    113                     n2++;
    114                 }
    115                 break;
    116             case 3:
    117                 if(b[i]==0)//分母为零则不计入总数
    118                 {   
    119                     i=i-1;break;
    120                 }
    121                 else if(remainder==0)//除法没有余数
    122                 {
    123                     if(a[i]%b[i]==0)
    124                     {
    125                         cout<<a[i]<<"/"<<b[i]<<"="<<endl;
    126                         cout<<"请输入结果:"<<endl;
    127                         cin>>result;
    128                         if(result==a[i]/b[i])
    129                         {
    130                             cout<<"回答正确!"<<endl;
    131                             n1++;
    132                         }
    133                         else
    134                         {
    135                             cout<<"回答错误!"<<endl;
    136                             cout<<"正确结果为:"<<a[i]/b[i]<<endl;
    137                             n2++;
    138                         }
    139                         break;
    140                     }
    141                     else
    142                     {
    143                         i=i-1;break;
    144                     }
    145                 }
    146                 else if(remainder==1)//除法有余数
    147                 {
    148                     if(a[i]%b[i]!=0)
    149                     {
    150                         cout<<a[i]<<"/"<<b[i]<<"="<<endl;
    151                         cout<<"请输入结果:"<<endl;
    152                         cin>>result;
    153                         if(result==(double)a[i]/b[i])
    154                         {
    155                             cout<<"回答正确!"<<endl;
    156                             n1++;
    157                         }
    158                         else
    159                         {
    160                             cout<<"回答错误!"<<endl;
    161                             cout<<"正确结果为:"<<(double)a[i]/b[i]<<endl;
    162                             n2++;
    163                         }    
    164                         break;
    165                     }
    166                     else
    167                     {
    168                         i=i-1;break;
    169                     }
    170                 }
    171                 
    172                 /*    if((i+1)%l==0)
    173                 {
    174                 cout<<endl;
    175                 }
    176                 else
    177                 {
    178                 cout<<"	";
    179                 }
    180                 */
    181             }
    182             break;//跳出循环
    183         }
    184     }
    185     cout<<"您一共答对"<<n1<<"道题目"<<endl;
    186     cout<<"您一共答错"<<n2<<"道题目"<<endl;
    187     return 0;
    188 }
    189 void main()
    190 {
    191     int number;//题目数量
    192     //    int l;//输出的列数
    193     int mul;//乘除法
    194     int num;//数值范围
    195     int neg;//负数
    196     int remainder;//余数
    197     int c;//循环变量
    198     while(c)
    199     {
    200         srand((unsigned) time(NULL));//调用随机函数发生器
    201         cout<<"---------------------------------"<<endl;
    202         cout<<"|            四则运算            |"<<endl;
    203         cout<<"---------------------------------"<<endl;
    204         cout<<"请输入要打印的题目数量:"<<endl;
    205         cin>>number;
    206         while(number<0)
    207         {
    208             cout<<"输入错误!"<<endl;
    209             cout<<"请输入要打印的题目数量:"<<endl;
    210             cin>>number;
    211         }
    212         //    cout<<"请输入要输出的列数(1-10):"<<endl;
    213         //    cin>>l;
    214         cout<<"是否有乘除法(0表示没有;1表示有)"<<endl;
    215         cin>>mul;
    216         while(mul!=0&&mul!=1)
    217         {
    218             cout<<"输入错误,请重新输入!是否有乘除法(0表示没有;1表示有)"<<endl;
    219             cin>>mul;
    220         }
    221         if(mul==1)
    222         {
    223             cout<<"除法有无余数(0表示没有;1表示有)"<<endl;
    224             cin>>remainder;
    225             while(remainder!=0&&remainder!=1)
    226             {
    227                 cout<<"输入错误,请重新输入!除法有无余数(0表示没有;1表示有)"<<endl;
    228                 cin>>remainder;
    229             }
    230         }
    231         cout<<"请输入正整数的数值范围(即最大数):"<<endl;
    232         cin>>num;
    233         cout<<"减法有无负数(0表示没有;1表示有)"<<endl;
    234         cin>>neg;
    235         while(neg!=0&&neg!=1)
    236         {
    237             cout<<"输入错误,请重新输入!"<<endl;
    238             cout<<"减法有无负数(0表示没有;1表示有)"<<endl;
    239             cin>>neg;
    240         }
    241         display(number,mul,num,neg,remainder);
    242         cout<<"继续请输入1,退出请输入0"<<endl;
    243         cin>>c;
    244     }
    245 }
    四、运行结果截图

    五、日志记录

    六、实验总结

      通过本次实验,我又发现了自己在编程上的不足,由于之前的四则运算2写得有点乱,导致它的扩展也不是很清楚。

    把所有参数都写到一个函数里,不利于扩展。以后应该多加注意。而且程序还有些不足之处,例如无法定制打印格式,

    对于有余数的情况,只能输出小数,而不能显示余数。

  • 相关阅读:
    Traits——信息输入界面
    Traits——安装/第一个界面
    opencv——如何安装opencv—python
    python——如何将列表中的元素全部取出来变成列表
    Pandas——循环路径下的文件将所有的txt文件进行合并
    股票交易
    良知?
    同源策略
    同步 异步 阻塞 非阻塞
    线程安全
  • 原文地址:https://www.cnblogs.com/czl123/p/4356130.html
Copyright © 2011-2022 走看看