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写得有点乱,导致它的扩展也不是很清楚。

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

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

  • 相关阅读:
    (二分查找 拓展) leetcode 69. Sqrt(x)
    (二分查找 拓展) leetcode 162. Find Peak Element && lintcode 75. Find Peak Element
    (链表) lintcode 219. Insert Node in Sorted Linked List
    (二分查找 拓展) leetcode 34. Find First and Last Position of Element in Sorted Array && lintcode 61. Search for a Range
    (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
    (字符串 数组 递归 双指针) leetcode 344. Reverse String
    (二叉树 DFS 递归) leetcode 112. Path Sum
    (二叉树 DFS 递归) leetcode 101. Symmetric Tree
    (二叉树 递归) leetcode 144. Binary Tree Preorder Traversal
    (二叉树 递归 DFS) leetcode 100. Same Tree
  • 原文地址:https://www.cnblogs.com/czl123/p/4356130.html
Copyright © 2011-2022 走看看