c语言 小学生测验程序功能要求 1:1、电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分2、不能有负数3、每道题有三次机会输入答案,当输入错误答案时,提醒学生重新输入。

小学生测验程序功能要求 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;
}

猜你喜欢

转载自blog.csdn.net/qq_62088638/article/details/134020890