#include #include //包含_getch()函数,可以自动从缓冲区读取一个字符(不需要按回车) #include //包含随机数函数 #include //包含时间函数 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; } } }