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;
}

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一份简单的 C 代码,可以实现你的需求: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i, a, b, op, ans, score = 0; // 设置随机数种子 srand(time(NULL)); // 循环10道题 for (i = 1; i <= 10; i++) { // 随机生成两个1~10之间的整数 a = rand() % 10 + 1; b = rand() % 10 + 1; // 随机生成加减法操作 op = rand() % 2; // 根据操作生成答案 if (op == 0) { ans = a + b; printf("%d + %d = ", a, b); } else { ans = a - b; printf("%d - %d = ", a, b); } // 获取学生答案 int input; scanf("%d", &input); // 判断学生答案是否正确 if (input == ans) { printf("Right!\n"); score += 10; } else { printf("Wrong! The answer is %d.\n", ans); } } // 输学生得分 printf("Your final score is %d.\n", score); return 0; } ``` 这份代码首先使用 `srand(time(NULL))` 设置随机数种子,然后使用 `rand()` 函数生成随机数。其中生成的两个整数 `a` 和 `b` 都在1~10之间,根据 `op` 变量随机生成加减法操作。然后程序算式并等待学生输入答案判断学生答案是否正确并计算得分。最终程序学生得分。 ### 回答2: 为了满足题目要求,我们可以用C语言编写一个针对小学1~2年级学生的加减法练习程序。具体实现如下: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int score = 0; // 设置随机种子 srand(time(0)); for (int i = 0; i < 10; i++) { // 生成两个随机整数(1~100) int num1 = rand() % 100 + 1; int num2 = rand() % 100 + 1; // 随机选择加法或减法 int operation = rand() % 2; // 显示问题 if (operation == 0) { printf("%d + %d = ", num1, num2); } else { // 确保减法结果不为负数 if (num1 < num2) { int temp = num1; num1 = num2; num2 = temp; } printf("%d - %d = ", num1, num2); } // 获取学生的回答 int answer; scanf("%d", &answer); // 判断回答是否正确 int result; if (operation == 0) { result = num1 + num2; } else { result = num1 - num2; } if (answer == result) { score += 10; printf("回答正确!\n"); } else { printf("回答错误!正确答案是%d\n", result); } } // 显示学生得分 printf("你的得分是:%d\n", score); return 0; } ``` 这个程序随机生成10道加减法题目,每题值为10学生需要在控制台输入答案程序判断回答的正确性,并显示每道题的正确答案。最后,程序会输学生得分。 希望这个程序符合您的需求,能够帮助小学1~2年级学生进行加减法练习。 ### 回答3: 为实现这个功能,可以编写一个C语言程序,具体如下: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); // 设置随机数种子 int score = 0; // 初始化学生得分为0 // 生成10道题 for (int i = 1; i <= 10; i++) { int num1 = rand() % 100 + 1; // 随机生成第一个整数 int num2 = rand() % 100 + 1; // 随机生成第二个整数 int operator = rand() % 2; // 随机选择加法或减法 int result, answer; // 用于存放计算结果和学生答案 // 根据随机选择的运算符进行相应的计算 if (operator == 0) { printf("第%d题: %d + %d = ", i, num1, num2); result = num1 + num2; } else { printf("第%d题: %d - %d = ", i, num1, num2); result = num1 - num2; } scanf("%d", &answer); // 学生输入答案 if (answer == result) { score += 10; // 答案正确,加10 } } printf("答题结束学生得分:%d\n", score); return 0; } ``` 这个程序使用`srand`函数来设置随机数种子,以确保每次运行程序都能生成不同的随机数。然后,通过循环生成10道题目,并且根据随机选择的运算符来生成相应的算式,并提示学生输入答案学生输入答案与计算结果进行比较,如果答案正确,学生得分10。最后,程序学生得分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值