程式設計:小學生考試系統(二)
阿新 • • 發佈:2019-01-25
問題及程式碼
/*煙臺大學計算機與控制工程學院 題目描述:做一個小學生考試系統,功能包括: (1)利用隨即數出十道加減乘除的數學題; (2)小學生使用者答題給出每道題的答案; (3)對小學生的答題進行評判; (4)計算出小學生答題的正確率; 作者:展一 完成時間:2017年 1月3日 */ #include <stdio.h> #include <stdlib.h> #include <time.h> void first_menu();//主選單 void right_ans1(int*);//一二年級考試系統 void right_ans2(int*);//三到六年級考試系統 int main() { int score=0,e,j,*p;//p指向子函式中的做對題目數p p=&score;//將p的值複製給score srand(time(0));//初始化隨機種子 printf(" 小天才數學考試系統\n"); for(j=0; j<3; j++) { first_menu(); scanf("%d",&e); if(e==1) right_ans1(p); else if(e==0) right_ans2(p); else { printf("輸入有誤,請重新輸入\n"); continue; } printf("共答對了%d道題,總得分為:%d分,得分率%.2f\n", score,score*10, 1.0*score/10*100); if(score*10>=60) { printf("恭喜你,成績合格!"); break; } else { if(j<2) printf("很抱歉,你的成績不合格,請重新答題\n"); else { printf("很抱歉,本次考試你未通過,請來年再考!"); break; } } } return 0; } void first_menu() { printf("請輸入以下編號進入所在年級題庫:\n"); printf("0:一、二年級\n");//針對不同年級的學生進行分開測試 printf("1:三到六年級\n"); printf("請輸入:"); } void right_ans1(int*p) { int s,i,c,a,b,t; for(i=0; i<10; i++) { printf("第 %d 題: ", i+1); c=rand()%4; do { a=rand()%100+1; b=rand()%100+1; if(a<b&&(c==1))//減法套保證被減數大於減數,除法要保證被除數大於除數 { s=a; a=b; b=s; } if(a<b&&(c==3)) { s=a; a=b; b=s; } if(a%b!=0&&(c==3)) { a=a-(a%b); } } while((a+b)>=100||a*b>=100); switch(c) { case 0: s=a+b; printf("%d+%d=", a, b); break; case 1: s=a-b; printf("%d—%d=", a, b); break; case 2: s=a*b; printf("%d×%d=", a, b); break; case 3: s=a/b; printf("%d÷%d=", a, b); break; } scanf("%d", &t); if(t==s) { printf(" right! \n"); (*p)++; } else printf(" wrong! \n"); } } void right_ans2(int*p) { int s,i,c,a,b,t; for(i=0; i<10; i++) { printf("第 %d 題: ", i+1); c=rand()%2; a=rand()%10+1; b=rand()%10+1; if(a<b&&(c==1)) { s=a; a=b; b=s; } switch(c) { case 0: s=a+b; printf("%d+%d=", a, b); break; case 1: s=a-b; printf("%d—%d=", a, b); break; } scanf("%d", &t); if(t==s) { printf(" right! \n"); (*p)++; } else printf(" wrong! \n"); } }