一、实验题目

在之前的基础上做一个小答题系统,要求:

1.可以判断对错;

2.可以统计做对的和做错的个数。

二、设计思路

判断对错就是将用户输入的数和正确的值相比较,正确输出√,错误输出×;

统计个数就是设置两个全局变量,让它去统计对错的个数。

三、源代码

  1 #include "stdio.h"
  2 #include "stdlib.h"
  3 #include "time.h"
  4 int correct=0;//声明全局变量correct
  5 int wrong=0;//声明全局变量wrong
  6 int Add(int num1,int num2)
  7 {
  8     int uresult,cresult;
  9     scanf("%d",&uresult);
 10     cresult=num1+num2;
 11     if(cresult==uresult)
 12     {
 13         printf("\t√");
 14         correct++;
 15     }
 16     else
 17     {
 18         printf("\t×");
 19         wrong++;
 20     }
 21     return 0;
 22 }
 23 int Sub(int num1,int num2)
 24 {
 25     int uresult,cresult;
 26     scanf("%d",&uresult);
 27     cresult=num1-num2;
 28     if(cresult==uresult)
 29     {
 30         printf("\t√");
 31         correct++;
 32     }
 33     else
 34     {
 35         printf("\t×");
 36         wrong++;
 37     }
 38     return 0;
 39 }
 40 int Mult(int num1,int num2)
 41 {
 42     int uresult,cresult;
 43     scanf("%d",&uresult);
 44     cresult=num1*num2;
 45     if(cresult==uresult)
 46     {
 47         printf("\t√");
 48         correct++;
 49     }
 50     else
 51     {
 52         printf("\t×");
 53         wrong++;
 54     }
 55     return 0;
 56 }
 57 int Divi(int num1,int num2)
 58 {
 59     double uresult,cresult;
 60     scanf("%g",&uresult);
 61     cresult=num1/num2;    //取整
 62     if(cresult==uresult)
 63     {
 64         printf("\t√");
 65         correct++;
 66     }
 67     else
 68     {
 69         printf("\t×");
 70         wrong++;
 71     }
 72     return 0;
 73 }
 74 int SetQuestion(int cheng,int number,int line,int plural,int scope,int konghang)
 75 {
 76     int num1,num2,oper,i;
 77     srand(time(NULL));                //i为循环次数
 78     printf("我们提供一下功能:                  \n");
 79     printf("    1.题目的数值范围(暂不支持小数)\n");
 80     printf("    2.题目的数量                    \n");
 81     printf("    3.打印时每行题的数量            \n");
 82     printf("    4.答案中会不会出现负数的结果    \n");
 83     printf("    5.题目中是否会出现乘除运算      \n");
 84     printf("    6.打印时每行的间隔              \n");
 85     printf("请输入数值范围:");
 86     scanf("%d",&scope);
 87     printf("请选择出题数量:");
 88     scanf("%d",&number);                                   //oper为题目数量
 89     printf("请输入每行题的数量:");
 90     scanf("%d",&line);                                     //line为每行题的数量
 91     printf("答案是否有负数(1为有,0为没有):");
 92     scanf("%d",&plural);                                   //plural是否是负数
 93     while(plural!=0 && plural!=1)                          //判断用户是否按要求输入
 94      {
 95          printf("sorry!输入错误,请按要求输入:");
 96          scanf("%d",&plural);
 97      }
 98 
 99     printf("是否有乘除运算(1为有,0为没有):");
100     scanf("%d",&cheng);
101     while(cheng!=0 && cheng!=1)                          //判断用户是否按要求输入
102      {
103          printf("sorry!输入错误,请按要求输入:");
104          scanf("%d",&cheng);
105      }
106     printf("中间有几个空行:");
107     scanf("%d",&konghang);
108     if(cheng==1)
109     {
110         if(plural==0)
111         {
112             for(i=1;i<=number;i++)
113             {
114                 num1=rand()%scope;
115                 num2=rand()%scope;
116                 oper=rand()%4;
117                 printf("(%d)",i);
118                 switch(oper)
119                 {
120                 case 0:
121                     printf("%d+%d=\t",num1,num2);
122                     break;
123                 case 1:
124                     if(num1>=num2)
125                         printf("%d-%d=\t",num1,num2);
126                     else
127                         printf("%d-%d=\t",num2,num1);
128                     break;
129                 case 2:
130                     printf("%d*%d=\t",num1,num2);
131                     break;    
132                 case 3:
133                     if(num2==0)
134                         printf("%d/%d=\t",num2,num1);
135                     else
136                         printf("%d/%d=\t",num1,num2);
137                     break;
138                 default:
139                     {
140                         printf("出错啦~~~");
141                     }
142                 }
143                 if(i%line==0)
144                 {
145                     for(int p=1;p<=konghang;p++)
146                     {
147                          printf("\n");
148                     }
149                 }
150             }
151             
152         }
153     else
154     {
155         for(i=1;i<=number;i++)
156         {
157             num1=rand()%scope;
158             num2=rand()%scope;
159             oper=rand()%4;
160             printf("(%d)",i);
161             switch(oper)
162             {
163             case 0:
164                     printf("%d+%d=\t",num1,num2);
165                     break;
166                 case 1:
167                     printf("%d-%d=\t",num1,num2);
168                     break;
169                 case 2:
170                     printf("%d*%d=\t",num1,num2);
171                     break;    
172                 case 3:
173                     if(num2==0)
174                         printf("%d/%d=\t",num2,num1);
175                     else
176                         printf("%d/%d=\t",num1,num2);
177                     break;
178             default:
179                     {
180                         printf("出错啦~~~");
181                     }
182             }
183             if(i%line==0)
184                 {
185                     for(int p=1;p<=konghang;p++)
186                     {
187                          printf("\n");
188                     }
189                 }
190         }
191     }
192     
193     }
194     else
195     {
196         if(plural==0)
197         {
198         for(i=1;i<=number;i++)
199         {
200             num1=rand()%scope;
201             num2=rand()%scope;
202             oper=rand()%2;
203             printf("(%d)",i);
204             switch(oper)
205             {
206             case 0:
207                 printf("%d+%d=\t",num1,num2);
208                 break;
209             case 1:
210                 if(num1>=num2)
211                     printf("%d-%d=\t",num1,num2);
212                 else
213                     printf("%d-%d=\t",num2,num1);
214                 break;
215             default:
216                     {
217                         printf("出错啦~~~");
218                     }
219             }
220             if(i%line==0)
221                 {
222                     for(int p=1;p<=konghang;p++)
223                     {
224                          printf("\n");
225                     }
226                 }
227         }
228         
229     }
230     else
231     {
232         for(i=1;i<=number;i++)
233         {
234             num1=rand()%scope;
235             num2=rand()%scope;
236             oper=rand()%2;
237             printf("(%d)",i);
238             switch(oper)
239             {
240             case 0:
241                 printf("%d+%d=\t",num1,num2);
242                 break;
243             case 1:
244                 printf("%d-%d=\t",num1,num2);
245                 break;
246             default:
247                     {
248                         printf("出错啦~~~");
249                     }
250             }
251                 if(i%line==0)
252                 {
253                     for(int p=1;p<=konghang;p++)
254                     {
255                          printf("\n");
256                     }
257                 }
258         }
259     }
260     
261     }
262     printf("\n");
263     
264     return 0;
265 }
266 
267 int AnswerQuestion(int cheng,int number,int line,int plural,int scope,int konghang){
268     int num1,num2,oper,i;
269     srand(time(NULL));
270     //a,b为运算数,c为选择哪个运算符,i为循环次数
271     printf("我们提供一下功能:                  \n");
272     printf("    1.题目的数值范围(暂不支持小数)\n");
273     printf("    2.题目的数量                    \n");
274     printf("    3.答案中会不会出现负数的结果    \n");
275     printf("    4.题目中是否会出现乘除运算      \n");
276     printf("    5.打印时每行的间隔              \n");
277     printf("请输入数值范围:");
278     scanf("%d",&scope);
279     printf("请选择出题数量:");
280     scanf("%d",&number);                                   
281     printf("答案是否有负数(1为有,0为没有):");
282     scanf("%d",&plural);                                   //plural是否是负数
283     while(plural!=0 && plural!=1)                          //判断用户是否按要求输入
284      {
285          printf("sorry!输入错误,请按要求输入:");
286          scanf("%d",&plural);
287      }
288 
289     printf("是否有乘除运算(1为有,0为没有):");
290     scanf("%d",&cheng);
291     while(cheng!=0 && cheng!=1)                          //判断用户是否按要求输入
292      {
293          printf("sorry!输入错误,请按要求输入:");
294          scanf("%d",&cheng);
295      }
296     printf("中间有几个空行:");
297     scanf("%d",&konghang);
298     if(cheng==1)
299     {
300         if(plural==0)
301         {
302             for(i=1;i<=number;i++)
303             {
304                 num1=rand()%scope;
305                 num2=rand()%scope;
306                 oper=rand()%4;
307                 printf("(%d)",i);
308                 switch(oper)
309                 {
310                 case 0:
311                     printf("%d+%d=",num1,num2);
312                     Add(num1,num2);
313                     break;
314                 case 1:
315                     if(num1>=num2)
316                     {
317                         printf("%d-%d=",num1,num2);
318                         Sub(num1,num2);
319                     }
320                     else
321                     {
322                         printf("%d-%d=",num2,num1);
323                         Sub(num2,num1);
324                     }
325                     break;
326                 case 2:
327                     printf("%d*%d=",num1,num2);
328                     Mult(num1,num2);
329                     break;    
330                 case 3:
331                     if(num2==0)
332                     {
333                         printf("%d/%d=",num2,num1);
334                         Divi(num2,num1);
335                     }
336                     else
337                     {
338                         printf("%d/%d=",num1,num2);
339                         Divi(num1,num2);
340                     }
341                     break;
342                 default:
343                     {
344                         printf("出错啦~~~");
345                     }
346                 }
347                 for(int p=1;p<=konghang;p++)
348                 {
349                      printf("\n");
350                 }
351             }
352             
353         }
354     else
355     {
356         for(i=1;i<=number;i++)
357         {
358             num1=rand()%scope;
359             num2=rand()%scope;
360             oper=rand()%4;
361             printf("(%d)",i);
362             switch(oper)
363             {
364             case 0:
365                     printf("%d+%d=",num1,num2);
366                     Add(num1,num2);
367                     break;
368                 case 1:
369                     printf("%d-%d=",num1,num2);
370                     Sub(num1,num2);
371                     break;
372                 case 2:
373                     printf("%d*%d=",num1,num2);
374                     Mult(num1,num2);
375                     break;    
376                 case 3:
377                     if(num2==0)
378                     {
379                         printf("%d/%d=",num2,num1);
380                         Divi(num2,num1);
381                     }
382                     else
383                     {
384                         printf("%d/%d=",num1,num2);
385                         Divi(num2,num1);
386                     }
387                     break;
388             default:
389                     {
390                         printf("出错啦~~~");
391                     }
392             }
393         
394             for(int p=1;p<=konghang;p++)
395             {
396                  printf("\n");
397             }
398         }
399     }
400     
401     }
402     else
403     {
404         if(plural==0)
405         {
406         for(i=1;i<=number;i++)
407         {
408             num1=rand()%scope;
409             num2=rand()%scope;
410             oper=rand()%2;
411             printf("(%d)",i);
412             switch(oper)
413             {
414             case 0:
415                 printf("%d+%d=",num1,num2);
416                 Add(num1,num2);
417                 break;
418             case 1:
419                 if(num1>=num2)
420                 {
421                     printf("%d-%d=",num1,num2);
422                     Sub(num1,num2);
423                 }
424                 else
425                 {
426                     printf("%d-%d=",num2,num1);
427                     Sub(num2,num1);
428                 }
429                 break;
430             default:
431                     {
432                         printf("出错啦~~~");
433                     }
434             }
435             for(int p=1;p<=konghang;p++)
436             {
437                  printf("\n");
438             }
439         }
440         
441     }
442     else
443     {
444         for(i=1;i<=number;i++)
445         {
446             num1=rand()%scope;
447             num2=rand()%scope;
448             oper=rand()%2;
449             printf("(%d)",i);
450             switch(oper)
451             {
452             case 0:
453                 printf("%d+%d=",num1,num2);
454                 Add(num1,num2);
455                 break;
456             case 1:
457                 printf("%d-%d=",num1,num2);
458                 Sub(num1,num2);
459                 break;
460             default:
461                     {
462                         printf("出错啦~~~");
463                     }
464             }
465             for(int p=1;p<=konghang;p++)
466             {
467                  printf("\n");
468             }
469         }
470     }
471     
472     }
473     printf("\n");
474     
475     return 0;
476 }
477 void menu()
478 {
479     printf("       欢迎使用四则运算出题系统     \n");
480     printf("          1.    开始出题            \n");
481     printf("          2.    开始答题            \n");
482     printf("          0.    退出系统            \n");
483 }
484 int main()
485 {
486     int cheng,number,line,plural,scope,konghang,percent,a,num;
487 l1:    menu();
488     printf("请选择(0-2):");
489     scanf("%d",&a);
490     switch(a)
491     {
492     case 1:
493         SetQuestion(cheng,number,line,plural,scope,konghang);
494         printf("是否继续(1为继续,0为不继续):");
495         scanf("%d",&num);
496         if(num==1)
497             goto l1;
498         else
499             printf("欢迎下次使用!\n");
500             break;
501     case 2:
502         AnswerQuestion(cheng,number,line,plural,scope,konghang);
503         printf("做对了%d道题\n",correct);
504         printf("做错了%d道题\n",wrong);
505         percent=correct/(correct+wrong);
506         if(percent>=6/10)
507         {
508             printf("你太棒了!!\n");
509         }
510         else
511         {
512             printf("不及格,你要加油啦~~~\n");
513         }
514         printf("是否继续(1为继续,0为不继续):");
515         scanf("%d",&num);
516         if(num==1)
517             goto l1;
518         else
519             printf("欢迎下次使用!\n");
520             break;
521     case 0:
522         printf("欢迎下次使用!\n");
523         break;
524     }
525 
526     return 0;
527 }
View Code

相关文章:

  • 2022-01-25
猜你喜欢
  • 2022-02-21
  • 2022-01-02
  • 2022-12-23
  • 2021-10-04
  • 2021-04-01
  • 2021-04-18
  • 2021-05-28
相关资源
相似解决方案