(1)电脑随机出20道题,每题5分,程序结束时品示学生得分; (2)随机给出的数在100以内: (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入, 如果三次机会结束则输出正确答案,该题不计入学生得分; 4)20道题全部答完以后,电脑给出学生总分,并将学生得分为0的题目以及相应 的正确答案再次输出 用c++写这个程序
时间: 2024-03-12 16:50:04 浏览: 97
以下是符合要求的C++程序:
```
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
const int NUM_QUESTIONS = 20; // 题目数量
const int MAX_SCORE = 5; // 每题分数
const int MAX_NUMBER = 100; // 随机数最大值
int score = 0; // 学生得分
int correct_count = 0; // 正确答题数量
int incorrect_count = 0; // 错误答题数量
int incorrect_questions[NUM_QUESTIONS] = {0}; // 记录答错的题目编号
int correct_answers[NUM_QUESTIONS] = {0}; // 记录每题的正确答案
srand(time(NULL)); // 设置随机数种子
for (int i = 1; i <= NUM_QUESTIONS; i++) {
int a = rand() % MAX_NUMBER; // 随机生成两个数
int b = rand() % MAX_NUMBER;
int answer = a + b; // 计算正确答案
cout << "问题 " << i << ": " << a << " + " << b << " = ?" << endl;
bool answered_correctly = false; // 标记是否回答正确
for (int j = 1; j <= 3; j++) { // 最多回答三次
int user_answer;
cin >> user_answer;
if (user_answer != answer) { // 回答错误
cout << "回答错误,请重新输入(还有 " << 3 - j << " 次机会)" << endl;
} else { // 回答正确
cout << "回答正确!" << endl;
answered_correctly = true;
score += MAX_SCORE; // 得分加上本题分数
correct_count++; // 正确答题数量加一
correct_answers[i-1] = answer; // 记录正确答案
break;
}
}
if (!answered_correctly) { // 三次机会用完,输出正确答案
cout << "正确答案是:" << answer << endl;
incorrect_questions[incorrect_count] = i; // 记录答错的题目编号
incorrect_count++; // 错误答题数量加一
}
}
cout << "答题结束!学生得分为:" << score << endl;
if (score == 0) { // 学生得分为0,输出所有错误题目及正确答案
cout << "学生得分为0,以下是所有错误题目及正确答案:" << endl;
for (int i = 0; i < incorrect_count; i++) {
int question_num = incorrect_questions[i];
cout << "问题 " << question_num << ": " << correct_answers[question_num-1] << endl;
}
}
return 0;
}
```
程序中使用了常量来存储题目数量、每题分数、随机数最大值等信息,方便后续维护。使用rand()函数生成两个随机数,并计算出正确答案。然后使用for循环最多允许学生回答三次,并记录答案是否正确。如果三次都回答错误,则输出正确答案,并记录答错的题目编号和正确答案。最后输出学生得分,如果得分为0,则输出所有错误题目及正确答案。
阅读全文