#include #include #include //定义习题结构 struct test{ char fuhao; int a; //其中一个加数或者减数 int b; //另一个加数或者减数 int rezult; //两数只差或者两数之和 }qst[10]; //10道题目question void jiemian(); //界面 void xitong(); //系统生成题目 int dati(); //学生答题模块 void pingjia(); //最终评价 int main() { jiemian(); xitong(); pingjia(); return 0; } //界面 void jiemian() { int kind; //是否开始考试 printf("此测验适用于小学1、2年级\n"); printf("-----------------------------\n"); printf("如果准备好请按 1 开始答题\n"); printf("-----------------------------\n"); scanf("%d",&kind); while(kind!=1) { printf("输入错误,请重新输入1\n"); scanf("%d",&kind); } printf("系统正在自动生成题目\n"); printf("-----------------------------\n"); printf("祝你测试愉快!\n"); printf("-----------------------------\n"); printf("现在开始答题\n"); printf("---------------------\n"); } //系统生成题目 void xitong() { int a; //a为随机一个数,用来判断做加法还是减法 int b,c; //b,c为加数减数 int i; //次数 srand(time(NULL)); for(i=0;i<10;i++){ a=rand(); b=rand()%51; c=rand()%51; if(a%2==0) { qst[i].fuhao='+'; while(b+c>50) { b=rand()%51; //判断两数之和是否超纲 c=rand()%51; } } else { qst[i].fuhao='-'; if(b0) { printf("很遗憾你答错了\n"); count--; if(count==0) break; printf("你还有%d次机会\n",count); printf("请重新输入你的答案: "); scanf("%d",&stuanswer); } switch(count) { case 0: printf("很遗憾此题你没有得到分数\n"); printf("此题的正确答案为 %d\n",qst[i].rezult); break; case 1: printf("此题你得到分数的分数为5分\n"); grade+=5; break; case 2: printf("此题你得到分数的分数为7分\n"); grade+=7; break; case 3: printf("此题你得到分数的分数为10分\n"); grade+=10; break; } printf("你目前的总分为%d\n\n",grade); count=3; //重置计数次数 } return grade; //返回最终成绩进行判断 } //最终评价 void pingjia() { int grade; grade=dati(); printf("你的总分为%d\n",grade); printf("你最终的评价;\n"); grade/=10; switch(grade){ case(10): case(9): printf("SMART\n"); break; case(8): printf("GOOD\n"); break; case(7): printf("OK\n"); break; case(6): printf("PASS\n"); break; default: printf("TRY AGAIN\n"); break; } }