小学生四则运算随机生成程序
计算机在教育中的应用常被称为计算机辅助教学(Computer-Assisted Instruction, CAI)。请编写一个程序来帮助小学生学习四则运算,按下列任务要求以循序渐进的方式编程。
(1)程序首先随机产生两个1~10之间的正整数,在屏幕上打印出问题,例如:
6*7=
然后让学生输入答案。程序检查学生输入的答案是否正确。若正确,则打印“Right”,然后问下一个问题;否则打印“Wrong! Please try again.”,然后提示学生重做,直到答对为止。
(2)在上述功能实现的基础之上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则提示“Wrong! You have tried three times! Test over!”,程序结束。
(3)在任务1的基础之上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计并输出总分,同时为了记录学生能力提高的过程,再输出学生的回答正确率(即错题数除以总题数的百分比)。
(4)在任务3的基础上,通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计总得分,然后打印出总分和学生的回答正确率。
(5)在任务4的基础上,为使学生通过反复练习熟练掌握所学内容,在学生完成10道运算题后,若学生回答正确率低于75%,则重新做10道题,直到回答正确率高于75%时才退出程序。
(6)开发一个CAI系统所要解决的另一个问题是学生疲劳的问题。消除学生疲劳的一种办法就是通过改变人机对话界面来吸引学生的注意力。在任务5的基础上,使用随机数产生函数产生一个1~4之间的随机数,配合使用switch语句和printf()函数调用,来为学生输入的每一个正确或者错误的答案输出不同的评价。
对于正确答案,可以在以下4种提示信息中选择一个进行显示:
Very good!
Excellent!
Nice work!
Keep up the good work!
对于错误答案,可在以下4种提示信息中选择一个进行显示:
No. Please try again.
Wrong. Try once more.
Don’t give up!
Not correct. Keep trying.
1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 int GetAnswer (void); 5 int Input (int answer,int m); 6 int main (void) 7 { 8 int answer,m,count,ret,score; 9 do{ 10 score=0; 11 count=0; 12 do{ 13 answer=GetAnswer(); 14 count++; 15 scanf("%d",&m); 16 ret=Input(answer,m); 17 score+=ret; 18 }while (count<10); 19 printf("%d\n",score); 20 printf("%d%%\n",score); 21 if (score<75) 22 { 23 printf("Do it again.\n"); 24 } 25 }while(score<75); 26 return 0; 27 } 28 int GetAnswer (void) 29 { 30 int a,b,op,answer; 31 srand(time(NULL)); 32 a=rand()%10+1; 33 b=rand()%10+1; 34 op=rand()%4+1; 35 switch (op) 36 { 37 case 1: 38 printf("%d+%d=?\n",a,b); 39 answer=a+b; 40 break; 41 case 2: 42 printf("%d-%d=?\n",a,b); 43 answer=a-b; 44 break; 45 case 3: 46 printf("%d*%d=?\n",a,b); 47 answer=a*b; 48 break; 49 case 4: 50 printf("%d/%d=?\n",a,b); 51 answer=a/b; 52 break; 53 } 54 return answer; 55 } 56 int Input (int answer,int m) 57 { 58 int c; 59 srand(time(NULL)); 60 c=rand()%4+1; 61 if (answer==m) 62 { 63 switch (c) 64 { 65 case 1: 66 printf("Very good!\n"); 67 break; 68 case 2: 69 printf("Excellent!\n"); 70 break; 71 case 3: 72 printf("Nice work!\n"); 73 break; 74 case 4: 75 printf("Keep up the good work!\n"); 76 break; 77 } 78 return 10; 79 } 80 else 81 { 82 switch (c) 83 { 84 case 1: 85 printf("No.Please try again.\n"); 86 break; 87 case 2: 88 printf("Wrong.Try once more.\n"); 89 break; 90 case 3: 91 printf("Don't give up!\n"); 92 break; 93 case 4: 94 printf("Not correct.Keep trying.\n"); 95 break; 96 } 97 return 0; 98 } 99 }