|
|
|
|
|
#include<stdio.h>
|
|
|
#include<conio.h> //包含_getch()函数,可以自动从缓冲区读取一个字符(不需要按回车)
|
|
|
#include<stdlib.h> //包含随机数函数
|
|
|
#include<time.h> //包含时间函数
|
|
|
|
|
|
int main()
|
|
|
{
|
|
|
while (true)
|
|
|
{
|
|
|
|
|
|
srand(time(NULL)); //time(NULL)读取得到从标准计时点(一般是1970年1月1日午夜)到当前时间的秒数。
|
|
|
//srand()是随机数发生器的初始化函数
|
|
|
int x, y, score = 0, count = 0, correctAnswer, currentAnswer, flag;
|
|
|
//x:前一个数,y:后一个数,score:最终分数,count:答题次数,correntAnswer:正确答案,currentAnswer:当前答案 ,flag:临时量
|
|
|
char choice,op;
|
|
|
|
|
|
//choice:存储选择,op:运算符
|
|
|
system("cls");
|
|
|
|
|
|
printf("欢迎进入测验,电脑将随机出10道题,每道题有三次作答机会,但每答错一次对应分数就会减少\n");
|
|
|
|
|
|
printf("按Enter键进入考试,其他键退出");
|
|
|
|
|
|
choice = _getch();
|
|
|
|
|
|
if (choice == 13) //Enter键的ascii码
|
|
|
|
|
|
{
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
|
|
|
system("cls"); //清屏
|
|
|
|
|
|
printf("现在是第%d道题:\n",i + 1);
|
|
|
|
|
|
x = rand() % 51; //产生0~50的随机数
|
|
|
|
|
|
flag = rand() % 2; //flag为0或1
|
|
|
|
|
|
if (flag)
|
|
|
|
|
|
{
|
|
|
op = '+';
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
op = '-';
|
|
|
}
|
|
|
if (op == '+') //当运算符为加时
|
|
|
{
|
|
|
y = rand() % (50 - x + 1); //第二个数的范围,满足两数之和小于等于50
|
|
|
correctAnswer = x + y; //算出正确答案
|
|
|
printf("%d %c %d = \n", x, op, y);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
y = rand() % (x + 1); //应为第一个数范围为0~50,所以第二个数比第一小就行了
|
|
|
correctAnswer = x - y; //算出正确答案
|
|
|
printf("%d %c %d = \n", x, op, y);
|
|
|
}
|
|
|
for (int j = 0; j < 3; j++)
|
|
|
{
|
|
|
printf("第%d次作答\n", j + 1);
|
|
|
count++;
|
|
|
printf("请输入您的答案:");
|
|
|
scanf("%d", ¤tAnswer);
|
|
|
|
|
|
if (currentAnswer == correctAnswer)
|
|
|
{
|
|
|
printf("恭喜你回答正确!\n");
|
|
|
system("pause"); //暂停
|
|
|
if (count == 1)
|
|
|
{
|
|
|
score = score + 10;
|
|
|
count = 0;
|
|
|
break;
|
|
|
//初始化count并退出循环
|
|
|
}
|
|
|
else if (count == 2)
|
|
|
{
|
|
|
score = score + 7;
|
|
|
|
|
|
count = 0;
|
|
|
|
|
|
break;
|
|
|
|
|
|
//初始化count并退出循环
|
|
|
}
|
|
|
else if (count == 3)
|
|
|
{
|
|
|
score = score + 5;
|
|
|
|
|
|
count = 0;
|
|
|
|
|
|
break;
|
|
|
|
|
|
//初始化count并退出循环
|
|
|
}
|
|
|
count = 0; //初始化
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
printf("答案错误!\n");
|
|
|
|
|
|
if (count == 3)
|
|
|
{
|
|
|
printf("第%d题的答题次数已用完,即将进入下一题",i + 1);
|
|
|
|
|
|
count = 0;
|
|
|
|
|
|
system("pause");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
system("cls");
|
|
|
|
|
|
printf("答题结束!\n");
|
|
|
|
|
|
printf("您的分数为%d\n",score);
|
|
|
|
|
|
printf("按Enter继续测试,其他键退出测试.");
|
|
|
|
|
|
choice = _getch();
|
|
|
|
|
|
if (choice != 13)
|
|
|
return 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
}
|