题目分析
能对100以内的加减法进行测验,并且得到的结果也是100以内的数字,最重要的是这些题是随机的,随机出题之后,从电脑上输入你的答案,一共有两次机会,如果两次都回答错误,最后将会公布正确答案,该程序在菜单条件下进行运行,自定义数据和非自定义的数据类型都是整数型。
代码如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void showmenu() //菜单函数
{
printf("*********************************************\n");
printf(" 欢迎使用数学测试系统\n");
printf("1.开始测试\n");
printf("2.查看分数\n");
printf("3.退出系统\n");
printf("*********************************************\n");
}
int start() //生成的测试函数
{
int i,x,j,a,b,t,c,answer,score=0;//定义初始化分数为0
srand(time(0)); //随机种子的种下
for(i=1;i<=10;i++) //循环10次,每一次对应一道题
{
x=rand()%2+1; //10道题中加减的随机生成
switch(x)
{
case 1: //加法的生成
do
{
a=rand()%101;
b=rand()%101;
answer=a+b;
}while(answer>100); //两个数的和大于100时,重新生成其中的一个数,控制范围在0-100
printf("第%d题:%d+%d=",i,a,b);break;
case 2: //减法的生成
a=rand()%101;
do
{
b=rand()%101;
}while(a<b); //被减数小于减数,重新生成减数,控制范围在0-100
printf("第%d题:%d-%d=",i,a,b);
answer=a-b;break;
}
for(j=1;j<=2;j++)
{
scanf("%d",&t); //输入您的答案
if(t==answer) //答案正确
{
printf("答案正确\n");
score=score+10;break;
}
else
{
printf("答案错误,请重新输入:\n");
scanf("%d",&c); //第一次答案错误,重新输入
if(c==answer)
{
printf("回答正确\n");score=score+5;}
else
{
printf("回答错误,正确的答案是:%d\n",answer);
score=score+0;break;}
}
}
}
return score;//计算总分数,并返回score值
}
int main()
{
int n,g; //定义选项,定义分数
do
{
showmenu(); //启用菜单函数
printf("请输入一个序号:");
scanf("%d",&n);
switch(n)
{
case 1:g=start();break;//开始测试
case 2:printf("您的分数是:%d\n",g);break;//输出分数值
case 3:break;
default:printf("请输入一个正确的序号");
}
}while(n!=3);
printf("谢谢使用简单数学测试系统");
return 0;
}