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

C++代码中bool变量correct始终为true,求问题原因排查

问题根源:输入处理逻辑错误

问题出在输入处理部分,和scoreSystem()函数没有关系。

错误原因说明

你当前写的if (std::cin >> answer),这个判断的是输入操作是否成功完成——只要用户输入了合法的字符串(不管内容对错),这个条件都会成立,correct就会被设为true,所以无论输入什么都会执行加分逻辑。

你真正需要实现的是判断用户输入的内容是否等于正确答案,而不是判断输入操作本身是否成功。

修正方案

不要直接用全局变量answer存储用户输入,单独定义变量接收用户输入,再和正确答案对比:

int main() {
    std::cout << "What is the capital of france?\n\n";
    std::string userInput; // 用独立变量存储用户输入,避免覆盖正确答案
    if (std::cin >> userInput) {
        // 对比用户输入与正确答案,设置correct的取值
        correct = (userInput == answer);
    } else {
        // 处理输入失败的情况(比如输入非法字符)
        correct = false;
    }
    scoreSystem();
    std::cout << score;
    return 0;
}

如果需要支持大小写不敏感的判断(比如用户输入Paris也判定正确),可以额外增加字符串大小写转换的逻辑,将用户输入统一转为小写后再和"paris"对比。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:08:11