本關任務:編寫一個程序,模擬教師給小學生出加法考試題,並統計得分。具體如下: 連續出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 }