码迷,mamicode.com
首页 > 其他好文 > 详细

加工过的四则运算

时间:2015-03-21 18:20:10      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

1. 要求能够让用户输入,并能判断其对错,和统计对的数目

 

2.构思: 每道题过河在swich语句中分支内部加入判断吗,对正确的输出对,并设一个变量来统计对的数目。

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 #include <iomanip>
  5 #include <iostream>
  6 #include <conio.h>
  7 using namespace std;
  8 
  9 
 10 
 11 int main(void)
 12 {
 13     srand((unsigned)time(NULL)); //本地时间为种子
 14     int a[100];
 15     int b[100];
 16     int c[100];
 17     int d[100];
 18     int num;
 19     int j;
 20     int count;
 21     char choice;
 22     int jiange;
 23     int range;
 24     char zhengfu;
 25     int sum = 0;
 26     char ch = \r;
 27     int k;
 28 
 29     //printf("please input num for type : ");
 30     //scanf_s("%d", &num);
 31     //printf("please input num for the sum of task : ");
 32     //scanf_s("%d", &count);
 33     //printf("chose have(y) or not(n)  Multiplication and division:");
 34     //scanf_s("%c", &choice);
 35     //printf("please input num for jiange :");
 36     //scanf_s("%d", &jiange);
 37     cout << "输入每行题目数 : ";
 38     cin >> num;
 39     cout << "输入题目数 : ";
 40     cin >> count;
 41     cout << "是否支持乘除(y/n):";
 42     cin >> choice;
 43     cout << "输入题与题的间隔 :";
 44     cin >> jiange;
 45     cout << "输入生成题目的范围 :";
 46     cin >> range;
 47     cout << "选择加减是否有正负数(y/n) : ";
 48     cin >> zhengfu;
 49 
 50 
 51     for (int i = 0; i < count; i++)
 52     {
 53 
 54         if (zhengfu == n)                       //判断正负
 55         {
 56             a[i] = rand() % range; //产生随机数
 57             b[i] = rand() % range;
 58 
 59             
 60             if (choice == y)                   //选择是否有乘除;
 61             {
 62                 c[i] = rand() % 4; //产生随机符号0到3分别代表四则运算
 63 
 64                 if (i == 0)         //a[0],b[0]的特殊情况;
 65                 {
 66                     printf("%-4d", a[i]);
 67                     switch (c[i])
 68                     {
 69                     case 0:
 70                         printf("+");
 71                         break;
 72                     case 1:
 73                         printf("-");
 74                         break;
 75                     case 2:
 76                         printf("*");
 77                         break;
 78                     case 3:
 79                         printf("/");
 80                         break;
 81                     }
 82                     printf("%4d =", b[i]);
 83                     cin >> d[i];
 84 
 85                     //for (k = 0; k < 6; k++)
 86                     //{
 87                     //    ch = getche();
 88                     //    if (ch == ‘\r‘)
 89                     //        break;
 90                     //}
 91                     switch (c[i])
 92                     {
 93                     case 0:
 94                         if (a[i] + b[i] == d[i])
 95                         {
 96                             cout << "答对了"<<endl;
 97                             sum++;
 98                         }
 99                         break;
100                     case 1:
101                         if (a[i] - b[i] == d[i])
102                         {
103                             cout << "答对了"<<endl;
104                             sum++;
105                         }
106                         break;
107                     case 2:
108                         if (a[i] * b[i] == d[i])
109                         {
110                             cout << "答对了"<<endl;
111                             sum++;
112                         }
113                         break;
114                     case 3:
115                         if (a[i] / b[i] == d[i])
116                         {
117                             cout << "答对了"<<endl;
118                             sum++;
119                         }
120                         break;
121                     }
122 
123                     
124                     //for (j = 0; j < jiange; j++)      //数据间的间隔
125                     //{
126                     //    printf(" ");
127                     //}
128                 }
129                 else                                //一般情况
130                 {
131                     for (int k = 0; k < i; k++)
132                     {
133                         if (a[k] == a[i] && b[k] == b[i] && c[k] == c[i])
134                         {
135                             i--;
136                             break;
137                         }
138                         else
139                         {
140                             if (k == i - 1)  //比较到最后一个数时
141                             {
142                                 printf("%-4d", a[i]);
143                                 switch (c[i])
144                                 {
145                                 case 0:
146                                     printf("+");
147                                     break;
148                                 case 1:
149                                     printf("-");
150                                     break;
151                                 case 2:
152                                     printf("*");
153                                     break;
154                                 case 3:
155                                     printf("/");
156                                     break;
157                                 }
158                                 printf("%4d =", b[i]);
159                                 scanf_s("%d", &d[i]);
160                                 switch (c[i])
161                                 {
162                                 case 0:
163                                     
164                                     if (a[i] + b[i] == d[i])
165                                     {
166                                         cout << "答对了"<<endl;
167                                         sum++;
168                                     }
169                                     break;
170                                 case 1:
171                                     
172                                     if (a[i] - b[i] == d[i])
173                                     {
174                                         cout << "答对了"<<endl;
175                                         sum++;
176                                     }
177                                     break;
178                                 case 2:
179                                     
180                                     if (a[i] * b[i] == d[i])
181                                     {
182                                         cout << "答对了"<<endl;
183                                         sum++;
184                                     }
185                                     break;
186                                 case 3:
187                                     
188                                     if (a[i] / b[i] == d[i])
189                                     {
190                                         cout << "答对了"<<endl;
191                                         sum++;
192                                     }
193                                     break;
194                                 }
195 
196                                 /*for (j = 0; j < jiange; j++)
197                                 {
198                                     printf(" ");
199                                 }*/
200                             }
201                         }
202                     }
203                 }
204                 //if ((i + 1) % num == 0)         //控制每行的题数
205                 //    printf("\n");
206             }
207             else                                //无乘除
208             {
209                 c[i] = rand() % 2; //产生随机符号0到3分别代表四则运算
210 
211                 if (i == 0)       //i ==0 特殊情况
212                 {
213                     printf("%-4d", a[i]);
214                     switch (c[i])
215                     {
216                     case 0:
217                         printf("+");
218                         break;
219                     case 1:
220                         printf("-");
221                         break;
222                     }
223                     printf("%4d =", b[i]);
224 
225                     scanf_s("%d", &d[i]);
226                     switch (c[i])
227                     {
228                     case 0:
229                         
230                         if (a[i] + b[i] == d[i])
231                         {
232                             cout << "答对了"<<endl;
233                             sum++;
234                         }
235                         break;
236                     case 1:
237                         
238                         if (a[i] - b[i] == d[i])
239                         {
240                             cout << "答对了"<<endl;
241                             sum++;
242                         }
243                         break;
244 
245                     }
246 
247                     for (j = 0; j < jiange; j++)
248                     {
249                         printf(" ");
250                     }
251                 }
252                 else            //无乘除一般情况
253                 {
254                     for (int k = 0; k < i; k++)
255                     {
256                         if (a[k] == a[i] && b[k] == b[i] && c[k] == c[i])
257                         {
258                             i--;
259                             break;
260                         }
261                         else
262                         {
263                             if (k == i - 1)  //比较到最后一个数时
264                             {
265                                 printf("%-4d", a[i]);
266                                 switch (c[i])
267                                 {
268                                 case 0:
269                                     printf("*");
270                                     break;
271                                 case 1:
272                                     printf("/");
273                                     break;
274                                 }
275                                 printf("%4d =", b[i]);
276 
277                                 scanf_s("%d", &d[i]);
278                                 switch (c[i])
279                                 {
280                                 case 0:
281                                     
282                                     if (a[i] + b[i] == d[i])
283                                     {
284                                         cout << "答对了"<<endl;
285                                         sum++;
286                                     }
287                                     break;
288                                 case 1:
289                                     
290                                     if (a[i] - b[i] == d[i])
291                                     {
292                                         cout << "答对了"<<endl;
293                                         sum++;
294                                     }
295                                     break;
296                                 }
297 
298                                 /*for (j = 0; j < jiange; j++)
299                                 {
300                                     printf(" ");
301                                 }*/
302                             }
303                         }
304                     }
305                 }
306                 /*if ((i + 1) % num == 0)
307                     printf("\n");*/
308             }
309         }
310         else                      //有正负
311         {
312             if (choice == y)      //选择是否有乘除;
313             {
314                 a[i] = rand() % (2 * range + 1) - range; //产生随机数
315                 b[i] = rand() % (2 * range + 1) - range;
316                 c[i] = rand() % 4; //产生随机符号0到3分别代表四则运算
317 
318                 if (i == 0)         //a[0],b[0]的特殊情况;
319                 {
320                     printf("%-4d", a[i]);
321                     switch (c[i])
322                     {
323                     case 0:
324                         printf("+");
325                         break;
326                     case 1:
327                         printf("-");
328                         break;
329                     case 2:
330                         printf("*");
331                         break;
332                     case 3:
333                         printf("/");
334                         break;
335                     }
336                     printf("%4d =", b[i]);
337 
338                     scanf_s("%d", &d[i]);
339                     switch (c[i])
340                     {
341                     case 0:
342                         
343                         if (a[i] + b[i] == d[i])
344                         {
345                             cout << "答对了"<<endl;
346                             sum++;
347                         }
348                         break;
349                     case 1:
350                         
351                         if (a[i] - b[i] == d[i])
352                         {
353                             cout << "答对了"<<endl;
354                             sum++;
355                         }
356                         break;
357                     case 2:
358                         
359                         if (a[i] * b[i] == d[i])
360                         {
361                             cout << "答对了"<<endl;
362                             sum++;
363                         }
364                         break;
365                     case 3:
366                         
367                         if (a[i] / b[i] == d[i])
368                         {
369                             cout << "答对了"<<endl;
370                             sum++;
371                         }
372                         break;
373                     }
374 
375 
376                 /*    for (j = 0; j < jiange; j++)
377                     {
378                         printf(" ");
379                     }*/
380                 }
381                 else              //一般情况有正负
382                 {
383                     for (int k = 0; k < i; k++)
384                     {
385                         if (a[k] == a[i] && b[k] == b[i] && c[k] == c[i])
386                         {
387                             i--;
388                             break;
389                         }
390                         else
391                         {
392                             if (k == i - 1)  //比较到最后一个数时
393                             {
394                                 printf("%-4d", a[i]);
395                                 switch (c[i])
396                                 {
397                                 case 0:
398                                     printf("+");
399                                     break;
400                                 case 1:
401                                     printf("-");
402                                     break;
403                                 case 2:
404                                     printf("*");
405                                     break;
406                                 case 3:
407                                     printf("/");
408                                     break;
409                                 }
410                                 printf("%4d =", b[i]);
411 
412                                 scanf_s("%d", &d[i]);
413                                 switch (c[i])
414                                 {
415                                 case 0:
416                                     
417                                     if (a[i] + b[i] == d[i])
418                                     {
419                                         cout << "答对了"<<endl;
420                                         sum++;
421                                     }
422                                     break;
423                                 case 1:
424                                     
425                                     if (a[i] - b[i] == d[i])
426                                     {
427                                         cout << "答对了"<<endl;
428                                         sum++;
429                                     }
430                                     break;
431                                 case 2:
432                                     
433                                     if (a[i] * b[i] == d[i])
434                                     {
435                                         cout << "答对了"<<endl;
436                                         sum++;
437                                     }
438                                     break;
439                                 case 3:
440                                     
441                                     if (a[i] / b[i] == d[i])
442                                     {
443                                         cout << "答对了"<<endl;
444                                         sum++;
445                                     }
446                                     break;
447                                 }
448 
449                                 /*for (j = 0; j < jiange; j++)
450                                 {
451                                     printf(" ");
452                                 }*/
453                             }
454                         }
455                     }
456                 }
457                 /*if ((i + 1) % num == 0)
458                     printf("\n");*/
459             }
460             else
461             {
462                 c[i] = rand() % 2; //产生随机符号0到3分别代表四则运算
463 
464                 if (i == 0)
465                 {
466                     printf("%-4d", a[i]);
467                     switch (c[i])
468                     {
469                     case 0:
470                         printf("+");
471                         break;
472                     case 1:
473                         printf("-");
474                         break;
475                     }
476                     printf("%4d =", b[i]);
477 
478                     scanf_s("%d", &d[i]);
479                     switch (c[i])
480                     {
481                     case 0:
482                         
483                         if (a[i] + b[i] == d[i])
484                         {
485                             cout << "答对了"<<endl;
486                             sum++;
487                         }
488                         break;
489                     case 1:
490                         
491                         if (a[i] - b[i] == d[i])
492                         {
493                             cout << "答对了"<<endl;
494                             sum++;
495                         }
496                         break;
497                     }
498 
499                     for (j = 0; j < jiange; j++)
500                     {
501                         printf(" ");
502                     }
503                 }
504                 else
505                 {
506                     for (int k = 0; k < i; k++)
507                     {
508                         if (a[k] == a[i] && b[k] == b[i] && c[k] == c[i])
509                         {
510                             i--;
511                             break;
512                         }
513                         else
514                         {
515                             if (k == i - 1)  //比较到最后一个数时
516                             {
517                                 printf("%-4d", a[i]);
518                                 switch (c[i])
519                                 {
520                                 case 0:
521                                     printf("+");
522                                     break;
523                                 case 1:
524                                     printf("-");
525                                     break;
526                                 }
527                                 printf("%4d =", b[i]);
528 
529                                 scanf_s("%d", &d[i]);
530                                 switch (c[i])
531                                 {
532                                 case 0:
533                                     
534                                     if (a[i] + b[i] == d[i])
535                                     {
536                                         cout << "答对了"<<endl;
537                                         sum++;
538                                     }
539                                     break;
540                                 case 1:
541                                     
542                                     if (a[i] - b[i] == d[i])
543                                     {
544                                         cout << "答对了"<<endl;
545                                         sum++;
546                                     }
547                                     break;
548 
549                                 }
550 
551                                 /*for (j = 0; j < jiange; j++)
552                                 {
553                                     printf(" ");
554                                 }*/
555                             }
556                         }
557                     }
558                 }
559                 /*if ((i + 1) % num == 0)
560                     printf("\n");*/
561             }
562 
563         }
564 
565 
566     }
567     cout << "对的题目数为 " <<sum << endl;
568     system("pause");    //暂停程序运行;
569     return 0;
570 }

截图:技术分享技术分享

3.bug:原来我是想让一行能输出几道题,但是最后对scanf或者cin输入就自动跳到下一行,后来我用getche()函数也没能实现最后避免自动到一行,最后还发现除法遇到0就报错了。

4.总结:遇到很多问题有些看上去特变小,就是解决不了,还是对现阶段的知识学习的不够,对get()类函数不了解。本次试验让我了解了getchar(),getche();getch()等等。

加工过的四则运算

标签:

原文地址:http://www.cnblogs.com/mtant/p/4355873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!