小学生测验系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、题目描述
小学生测验
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”
,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”
2、设计思路
①函数原型说明int dati();void myinput(int t);
②定义主函数:
③定义函数dati;它的作用是:随机选择0-50之间的数,进行随机的加减运算,且结果不也在0-50之间,并让学生回答,共10道题,对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;最后得出总成绩。
④定义函数myout;他的作用是:在屏幕上输出学生测试的总成绩;并给出相应的评价。
3、算法描述(用流程图或盒图描述)
4、程序清单(要求能够运行正确的结果,程序格式缩进,适当加注释)
#include
#include
#include
#include
int dati(); /*声明答题函数,无参数*/
void myoutput(int t); /*声明输出成绩和给出相应的评价函数*/
main()
{
int chengji;
chengji=dati();
myoutput(chengji);
getch();
}
int dati()
{
int a,b,c,i,j,n,k,cj=0,r[4][2]={{0,0},{1,5},{2,7},{3,10}}; /*r[1][5]表示答对当前题目时还剩下1次机会时的5分*/
srand(time(0));
printf("==============小学生测试系统==============\n\n");
printf("------------------------------------------\n");
for(i=1;i<=10;i++,printf("------------------------------------------\n"))
{
a=rand()%51;
b=rand()%(51-a)+a; /*给a,b赋随机值,且0<=a<=b<=50*/
c=b-a; /*则c也为随机变量,且0<=a,c<=b<=50*/
n=rand()%2; /*使n在0,1中随机取值*/
if(n==0) /*当n为0时,给出加法题目*/
{
printf("第%d道算数题:%d+%d=___.\n",i,a,c);
for(j=3;j>=1;j--) /*当j=3时,表示有三次答题机会,答对则退出循环*/
{
printf("你的答案是(你还有%d次回答的机会):",j-1);
scanf("%d",&k);
if(k==b)
{
printf("Very Good\n\n");
cj=cj+r[j][1]; /*将所得分数进行累加*/
break;
}
else
{
printf("回答不正确.\n");
}
}
if(j==0)printf("三次机会用完咯,别灰心,来答下一道题吧!\n\n");
}
else /*当n为1时,给出减法题目*/
{
printf("第%d道算数题:%d-%d=___.\n",i,b,c);
for(j=3;j>=1;j--) /*当j=3时,表示有三次答题机会,答对则退出循环*/
{
printf("你的答案是(你还有%d次回答的机会):",j-1);
scanf("%d",&k);
if(k==a)
{
printf("Very Good\n\n");
cj=cj+r[j][1]; /*将所得分数进行累加*/
break;
}
else
{
printf("回答不正确.\n");
}
}
if(j==0)printf("三次机会用完咯,别灰心,来答下一道题吧!\n\n");
}
}
return cj;
}
void myoutput(int t)
{
printf("==========================\n");
printf("| 您的最终得分是:%d |\n| 评价:",t);
switch(t/10)
{
case 10:
case 9:printf("SMART");break;
case 8:printf("GOOD");break;
case 7:printf("OK");break;
case 6:printf("PASS");break;
default:printf("TRY AGAIN");break;
}
printf(" |\n==========================\n");
}
5、运行结果(截图)