本关任务:编写一个程序,模拟教师给小学生出加法考试题,并统计得分。具体如下: 连续出10道110以内的加法题,出一题答一题,按每题10分统计总得分。通过计算机输入两个110之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,每多做一次扣1分,如果三次仍未做对,则显示“Not correct. You have tried three times! Over!” 最后,打印出总分和做错的题目数量。
根据提示,在右侧编辑器补全函数AddTest(),Print(),GiveScore(),分别用于测试答案,打印提示,对答题情况进行评分。在main函数中输入10组两个1~10之间的正整数作为加数,统计答题情况并输出总分和做错的题目数量。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #define TRUE 1 5 #define FALSE 0 6 7 int AddTest(int a, int b); 8 void Print(int flag, int chance); 9 int GiveScore(int a,int b); 10 11 int main() 12 { 13 int a,b,totalScore = 0,errorCount = 0; 14 int i; 15 int gs; 16 //连续出10道题,一题一答,每题满分10分,统计总得分和总的错题数量 17 /*************Begin*************/ 18 for(i=1;i<=10;i++){ 19 a=rand()%10+1; 20 b=rand()%10+1; 21 printf("%d:%d+%d=\n",i,a,b); 22 gs=GiveScore(a,b); 23 totalScore=totalScore+gs; 24 if(gs==0){ 25 errorCount=errorCount+1; 26 27 } 28 29 } 30 /*************End***************/ 31 printf("score = %d, error numbers = %d\n", totalScore, errorCount); 32 return 0; 33 } 34 35 // 函数功能:计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0 36 int AddTest(int a, int b) 37 { 38 int s; 39 40 scanf(" %d",&s); 41 if(s==a+b){ 42 43 return 1; 44 }else{ 45 return 0; 46 } 47 48 49 50 } 51 52 // 函数功能:输出结果正确与否的信息,flag标志结果正确与否,chance记录同一道题做了几次 53 void Print(int flag, int chance) 54 { 55 if (flag == TRUE){ 56 57 printf("Right!\n"); 58 } 59 60 else if (chance < 3){ 61 printf("Not correct. Try again!\n"); 62 63 } 64 else{ 65 66 printf("Not correct. You have tried three times! Over!\n"); 67 } 68 69 } 70 71 // 函数功能:对题目a+b进行评分,满分10分,最多答三次,每多答1次扣1分 72 int GiveScore(int a,int b) 73 { 74 75 76 int chance=1,score=0,flag=0; 77 for(chance=1;chance<=3;chance++){ 78 flag=AddTest(a,b); 79 Print(flag,chance); 80 if(flag){ 81 82 score=10-chance+1; 83 break; 84 }else{ 85 if(chance<3){ 86 87 printf("%d+%d=\n",a,b); 88 } 89 90 } 91 92 } 93 94 return score; 95 96 /*************End***************/ 97 }