C语言编程,面向小学 1-2 年级学生,随机选择两个整数加减法形成算式要求学生解答。要求至少具有如下功能: (1)电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分; (2)确保算式没有超出 1-2 年级的水平,只允许进行 50 以内的加减法,不允许两数之和或两数之差超出 0~50 的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得 10 分,第二次输入正确答案得 7 分, 第三次输入正确答案得 5 分,否则不得分; (5)总成绩 90 以上显示“SMART”, 80-90 显示“GOOD”, 70-80 显示“OK”, 60-70显示“PASS”,60 以下“TRY AGAIN”。 【功能要求】 1.只允许进行 50 以内的加减法,不允许两数之和或之差超出 0-50 的范围,编写一个子函数实现。 主函数作为程序的入口,显示答题和评分界面
时间: 2024-03-27 19:36:14 浏览: 62
好的,以下是一个满足要求的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 检查算式是否合法
int check(int x, int y, char op) {
if (op == '+') {
return (x + y <= 50);
} else if (op == '-') {
return (x - y >= 0);
} else {
return 0;
}
}
// 生成随机算式
void generate(int *x, int *y, char *op) {
int valid = 0;
while (!valid) {
*x = rand() % 51;
*y = rand() % 51;
if (rand() % 2 == 0) {
*op = '+';
} else {
*op = '-';
}
valid = check(*x, *y, *op);
}
}
// 程序入口
int main() {
int i, j, ans, score, total = 0;
int x, y, remain, chance = 3;
char op, buffer[100];
srand((unsigned) time(NULL)); // 初始化随机数生成器
printf("Welcome to the Math Quiz!\n\n");
printf("You will be given 10 random addition or subtraction questions,\n");
printf("and you will have 3 chances to answer each question.\n\n");
printf("Press ENTER to begin the quiz...");
getchar(); // 等待用户按下 ENTER 键
for (i = 1; i <= 10; i++) {
generate(&x, &y, &op); // 生成随机算式
remain = chance;
score = 0;
printf("\nQuestion %d: %d %c %d = ", i, x, op, y);
for (j = 1; j <= chance; j++) {
fgets(buffer, 100, stdin);
ans = atoi(buffer);
if ((op == '+' && ans == x + y) || (op == '-' && ans == x - y)) {
// 回答正确,加分并退出循环
switch (j) {
case 1:
score = 10;
break;
case 2:
score = 7;
break;
case 3:
score = 5;
break;
}
break;
} else {
remain--;
if (remain == 0) {
// 回答错误三次,显示正确答案并退出循环
printf("Wrong! The correct answer is %d.\n", (op == '+') ? x + y : x - y);
break;
} else {
// 提醒重新输入并继续循环
printf("Wrong! Please try again. (%d chances remaining) ", remain);
}
}
}
total += score;
printf("Score: %d\n", score);
}
printf("\nYour total score is %d.\n", total);
if (total >= 90) {
printf("SMART!\n");
} else if (total >= 80) {
printf("GOOD\n");
} else if (total >= 70) {
printf("OK\n");
} else if (total >= 60) {
printf("PASS\n");
} else {
printf("TRY AGAIN\n");
}
return 0;
}
```
这个程序中,`check` 函数用于检查算式是否合法,`generate` 函数用于生成随机算式,`main` 函数包含了程序的主要逻辑,通过循环来生成 10 道题目,并计算学生的得分和总成绩。每道题目有 3 次机会输入答案,每次机会回答错误都会扣除一次机会,直到机会用完或者回答正确为止。根据学生的得分来评定最终成绩。
希望这个程序能够满足你的需求,如果还有其他问题,请随时提出。
阅读全文