You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何打乱测验题4个cout输出的选项顺序且保留原有校验逻辑

实现方案

你只需要把预先选好的4个选项(正确答案+3个干扰项)存入临时数组,用洗牌算法打乱顺序后输出即可,完全不需要改动原有生成正确答案的逻辑,后续校验用户答案的规则也和之前完全一致。

完整修改后的代码

srand((int)time(0));
// 你原有生成正确答案下标的逻辑完全保留
int random_number = rand() % (max_event_number - 3); // 这里加-3避免数组越界,如果你原有逻辑已经处理越界可以不改这行

// 1. 把4个待输出选项存入临时数组
int options[4] = {
    final_years[random_number],
    final_years[random_number + 1],
    final_years[random_number + 2],
    final_years[random_number + 3]
};

// 2. 用Fisher-Yates算法随机打乱选项顺序
for (int i = 3; i > 0; --i) {
    int j = rand() % (i + 1);
    // 交换两个位置的元素
    int temp = options[i];
    options[i] = options[j];
    options[j] = temp;
}

// 3. 按打乱后的顺序输出选项
for (int i = 0; i < 4; ++i) {
    std::cout << "\n" << options[i] << std::endl;
}

std::cout << "\n" << "Please type the correct year : " << std::endl;

方案说明

  • 正确答案必然出现在输出的4个选项中,不会出现漏题问题
  • 原有校验逻辑完全不需要改动,直接拿用户输入和final_years[random_number]比对即可判断正误
  • 所有选项排列的概率均等,不会出现正确答案固定在某个位置的问题

内容的提问来源于stack exchange,提问作者Alex Pina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:36:03