小学生测验程序功能要求 1:1、电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分2、不能有负数3、每道题有三次机会输入答案,当输入错误答案时,提醒学生重新输入,若三次机会结束则输try again
直接上代码!!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_CHANCES 3
int generateRandomNumber(int lower, int upper) {
return (rand() % (upper - lower + 1)) + lower;
}
int calculate(int num1, int num2, char op) {
int result;
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
return result;
}
int main() {
int i;
char userName[20];
char password[20];
int score = 0;
printf("欢迎使用小学生测验程序\n");
// 登录功能
do {
printf("请输入用户名:");
scanf("%s", userName);
printf("请输入密码:");
scanf("%s", password);
if (strcmp(userName, "admin") != 0 || strcmp(password, "admin") != 0) {
printf("用户名或密码错误,请重新登录!\n");
}
} while (strcmp(userName, "admin") != 0 || strcmp(password, "admin") != 0);
printf("\n登录成功!开始答题!\n");
// 设置随机种子
srand(time(NULL));
// 进行10道题目的测验
for (i = 0; i < 10; i++) {
int num1 = generateRandomNumber(1, 10);
int num2 = generateRandomNumber(1, 10);
// 随机选择加减乘除操作符
char operators[] = {'+', '-', '*', '/'};
int operatorIndex = generateRandomNumber(0, 3);
char op = operators[operatorIndex];
int result;
int answer;
int chances = MAX_CHANCES;
int earnedScore = 0;
if (op == '+') {
result = num1 + num2;
} else if (op == '-') {
// 确保减法结果不为负数
if (num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
result = num1 - num2;
} else if (op == '*') {
result = num1 * num2;
} else if (op == '/') {
// 确保除法结果不含小数
num1 = num1 * num2;
result = num1 / num2;
}
printf("\n第 %d 题:%d %c %d =", i + 1, num1, op, num2);
do {
printf("\n请输入答案:");
scanf("%d", &answer);
if (answer == result) {
switch (chances) {
case MAX_CHANCES:
score += 10;
earnedScore = 10;
break;
case MAX_CHANCES - 1:
score += 7;
earnedScore = 7;
break;
case MAX_CHANCES - 2:
score += 5;
earnedScore = 5;
break;
}
break;
} else if (chances > 1) {
printf("答案错误,请重新输入!(还有 %d 次机会)\n", chances - 1);
} else {
printf("三次机会已用完,正确答案是 %d\n", result);
}
chances--;
} while (chances > 0);
printf("得分:%d\n", earnedScore);
}
printf("\n答题结束!\n");
printf("学生得分:%d\n", score);
// 根据得分给出评价
if (score >= 90) {
printf("总成绩:SMART(优秀)\n");
} else if (score >= 80) {
printf("总成绩:GOOD(良好)\n");
} else if (score >= 70) {
printf("总成绩:OK(及格)\n");
} else {
printf("总成绩:TRY AGAIN(不及格)\n");
}
return 0;
}