连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,每道题最多给三次机会。10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
int a, b, answer, sum = 0, fault = 0;
srand(time(NULL)); // 只需要在程序开始时调用一次即可,不需要每次循环都调用
for (int i = 1; i <= 10; i++) {
a = rand() % 10 + 1;
b = rand() % 10 + 1;
int try_times = 3;
while (try_times--) {
printf("%d + %d = ", a, b);
scanf("%d", &answer);
if (answer == a + b) {
printf("Right!\n");
sum += 10;
break;
} else {
printf("Not correct! Please try again.\n");
}
}
if (try_times < 0) {
fault++;
}
}
printf("总分:%d\n错误题数:%d\n", sum, fault);
return 0;
}
基于new bing和自己的理解进行修改回答:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#define MAX_QUESTIONS 10 // 最大题目数
#define MAX_TRIES 3 // 每题最大尝试次数
#define MAX_SCORE 10 // 每题最大分数
int main() {
int score = 0; // 总分
int wrong = 0; // 做错的题数
srand(time(NULL)); // 设置随机数种子
// 循环出题
for (int i = 0; i < MAX_QUESTIONS; i++) {
// 随机生成两个1~10之间的加数
int a = rand() % 10 + 1;
int b = rand() % 10 + 1;
int answer = a + b; // 正确答案
int input; // 用户输入
bool correct = false; // 是否回答正确
printf("Question %d: %d + %d = ?\n", i + 1, a, b); // 打印题目
// 循环检查答案,最多三次机会
for (int j = 0; j < MAX_TRIES; j++) {
printf("Enter your answer: "); // 提示输入答案
scanf("%d", &input); // 获取用户输入
if (input == answer) { // 如果答案正确
printf("Right!\n"); // 显示正确信息
correct = true; // 标记为正确
break; // 跳出循环
} else { // 如果答案错误
printf("Not correct!\n"); // 显示错误信息
}
}
if (correct) { // 如果回答正确
score += MAX_SCORE; // 增加总分
} else { // 如果回答错误
wrong++; // 增加做错的题数
}
}
printf("Your total score is %d out of %d.\n", score, MAX_QUESTIONS * MAX_SCORE); // 打印总分
printf("You got %d questions wrong.\n", wrong); // 打印做错的题数
return 0;
}
该回答引用ChatGPT
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int score = 0; // 总得分
int wrong = 0; // 做错的题数
srand(time(NULL)); // 初始化随机数种子
for (int i = 1; i <= 10; i++) {
int num1 = rand() % 10 + 1; // 生成1~10之间的随机数
int num2 = rand() % 10 + 1;
int answer; // 存储学生输入的答案
int chance = 3; // 剩余机会次数
printf("Question %d: %d + %d = ", i, num1, num2);
while (chance > 0) {
scanf("%d", &answer);
if (answer == num1 + num2) {
printf("Right!\n");
score += 10; // 回答正确,加10分
break;
} else {
printf("Not correct! ");
chance--;
if (chance > 0) {
printf("You have %d chance(s) left. Please try again: ", chance);
} else {
printf("The correct answer is %d.\n", num1 + num2);
wrong++; // 回答错误,做错的题数加1
}
}
}
}
printf("Total score: %d\n", score);
printf("Number of wrong answers: %d\n", wrong);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:import random
score = 0 # 计分板,初始得分为0
mistake_count = 0 # 错误题目数量
for i in range(10): # 循环10次
num1 = random.randint(1, 10) # 生成第一个加数
num2 = random.randint(1, 10) # 生成第二个加数
answer = num1 + num2 # 生成正确答案
print("第" + str(i+1) + "题:") # 输出题目编号
for j in range(3): # 每题最多尝试3次
user_answer = int(input(str(num1) + " + " + str(num2) + " = ")) # 获取用户输入
if user_answer == answer: # 如果回答正确
print("Right!")
score += 10 # 增加得分
break # 跳出本题循环
else: # 如果回答错误
print("Not correct!")
mistake_count += 1 # 增加错误题目数量
print() # 输出空行
# 输出总得分和错误题目数量
print("总得分为:" + str(score))
print("错误题目数量为:" + str(mistake_count))
解释:
random
模块生成 1 至 10 之间的两个随机数作为加数,计算正确答案 answer
。for
循环 10 次,每次循环生成一道加法题目并让用户回答,最多尝试 3 次。"Right!"
并增加得分 score
,跳出本题循环;如果用户回答错误,则输出 "Not correct!"
并增加错误题目数量 mistake_count
。