题目描述
小学生考试系统
做一个小学生考试系统,功能如下:
(1)利用随机函数出10道加法题;
(2)小学生用户答题,给出每道题的答案;
(3)对小学生的答题进行评判;
(4)计算小学生的答题正确率。
进一步改进,提高题目质量。要求
(1)百以内算术:运算数、结果都在100以内!
(2)先随机产生运算符后,针对各个运算产生运算数保证下列要求:
对加法,两数之和保证不大于100;
对减法,被减数大于减数,且被减数不大于100;
对乘法:两数之积不超过100;
对除法:被除数大于除数,且被除数不大于100,
(3)除数不许为0。
可进行多次选择,是否继续答题
代码:
/*烟台大学计算机学院 2016
作者: 马春澎
完成日期:2017年1月4日 */
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
void f(int choose);//定义函数,在用户想继续答题时应用。
int main()
{
int a,b,sum,choose,i,answer,count1;
count1=0;//计数
printf("*****GOOD LUCK!*****\n\n");
for(i=0; i<10; i++)
{
sum=0;
srand(time(0));
a=rand()%10+1;
b=rand()%10+1;//定义两个随机数。
sum=a+b;
printf("%d+%d=",a,b);
scanf("%d",&answer);//计算
if(answer==sum)
{
printf("right!\n");//如果结果正确输出right,并记下做对的个数
count1++;
}
else printf("wrong!\n");
}
printf(" 正确率 :%d%%\n\n",count1*10);
printf(" 你的得分为 :%d 分\n\n",count1*10);
if(count1>6)
printf("*****你真棒!*****\n");
else printf("*****继续努力!*****\n");
printf("请选择 :输入1 继续答题难度上升, 输入其他任意键退出。。。\n");
scanf("%d",&choose);
f(choose);
return 0;
}
/*************************************************************
功能描述:进一步提高题目难度
输入参数:choose—选择是否继续答题
返 回 值:无
其他说明:无
*************************************************************/
void f(int choose)
{
int answer2,y,count2=0,c,choose2=1,d,e,t,j;
srand(time(0));
if(choose==1)//如果选择1进入循环
{
while(choose2==1)
{
system("cls");//清空屏幕上以前的数据
printf("*****GOOD LUCK!*****\n\n");
for(j=0; j<10; j++)
{
t=rand()%4+1;//定义随机数用来储存运算符
do
{
c=rand()%100+1;
d=rand()%100+1;
if(c<d&&(t==2||t==4))//如果运算符为减法或除法,保证被减数大于减数,被除数大于除数
{
e=c;
c=d;
d=e;
}
if(t==4)//保证可以整除
c=(c/d)*d;
}
while((c+d)>=100||c*d>=100);//保证两数之和不大于100,两数之积小于100
switch(t)//进行运算
{
case 1:
y=c+d;
printf("%d+%d=",c,d);
scanf("%d",&answer2);
if(answer2==y)
{
printf("right!\n");
count2++;
}
else printf("wrong!\n");
break;
case 2:
y=c-d;
printf("%d-%d=",c,d);
scanf("%d",&answer2);
if(answer2==y)
{
printf("right!\n");
count2++;
}
else printf("wrong!\n");
break;
case 3:
y=c*d;
printf("%d×%d=",c,d);
scanf("%d",&answer2);
if(answer2==y)
{
printf("right!\n");
count2++;
}
else printf("wrong!\n");
break;
case 4:
y=c/d;
printf("%d÷%d=",c,d);
scanf("%d",&answer2);
if(answer2==y)
{
printf("right!\n");
count2++;
}
else printf("wrong!\n");
break;
}
}
printf(" 正确率 :%d%%\n\n",count2*10);
printf(" 你的得分为 :%d 分\n\n",count2*10);
if(count2>6)
printf("*****你真棒!*****\n");
else printf("*****继续努力!*****\n");
printf("你还想再做吗?\n输入1继续做 输入其他键退出。。。\n");
scanf("%d",&choose2);//选择循环是否继续
}
}
}
运算结果
知识点总结
随机数和函数的应用
学习心得
随机函数的调用方法要知道,循环的位置要放好。