四则运算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<<"\t";
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写得有点乱,导致它的扩展也不是很清楚。

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

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

posted @ 2015-03-21 20:29  Jameslige  阅读(140)  评论(0编辑  收藏  举报