You need to enable JavaScript to run this app. C++编写的密码黑客游戏输入错误密码仍进入下一关如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

C++编写的密码黑客游戏输入错误密码仍进入下一关如何解决?

问题原因

你程序的问题出在两处逻辑错误:

  • 密码校验条件写错:当前你用了&&(逻辑与)做错误判断,只有当玩家输入的数字和、乘积同时都不等于正确值时才会判定密码错误,只要任意一个值匹配就会被判定为正确,显然不符合要求。
  • 关卡递进逻辑无判断:主函数的while循环中,完全没有用到PlayGame返回的通关结果,不管玩家密码对错,都会直接累加关卡等级进入下一关。
修复方案
  1. 调整密码判断逻辑:只有当数字和、乘积同时等于正确值时,才判定密码正确,其余情况均为错误
  2. 主函数增加关卡递进的判断:只有通关成功才提升难度等级,失败则保持当前等级重新挑战
修复后完整代码
#include <iostream>

void Intro(int Level) {
  std::cout << "嘿,这台电脑被锁了\n\n" << "行啊,你可以试试……输错密码的话一切就都结束了\n" << "输入你能想到的最优密码,攻破编号为 " << Level << " 的服务器";
}
bool PlayGame(int Diff) {
  Intro(Diff);

  int CodeA = 0;
  int CodeB = 1;
  int CodeC = 2;

  int CodeProduct = CodeA * CodeB * CodeC;
  int CodeSum = CodeA + CodeB + CodeC;

  std::cout << std::endl;

  //提示信息
  std::cout << "+ 密码是3个数字" << "\n+ 数字相加的和为 " << CodeSum << "\n+ 数字相乘的积为 " << CodeProduct << std::endl;

  int PlayerGuessA;
  int PlayerGuessB;
  int PlayerGuessC;

  std::cin >> PlayerGuessA >> PlayerGuessB >> PlayerGuessC;

  int PlayerSum = PlayerGuessA + PlayerGuessB + PlayerGuessC;
  int PlayerProduct = PlayerGuessA * PlayerGuessB * PlayerGuessC;
  std::cout << "你输入的是:\n" << PlayerGuessA << " " << PlayerGuessB << " " << PlayerGuessC;

  std::cout << "\n \n 你输入的数字乘积为: " << PlayerProduct;
  std::cout << "\n 你输入的数字和为: " << PlayerSum;

  // 修改判断逻辑:只有和和乘积同时正确才判定通关
  if (PlayerSum == CodeSum && PlayerProduct == CodeProduct) {
    std::cout << std::endl << "行啊,有点东西 " << std::endl;
    return true;

  } else {
    std::cout << std::endl << "我早说过了,菜死了" << std::endl;
    return false;
  }

}

int main() {
  int Lev = 1;
  while (true) {
    bool bLevelComplete = PlayGame(Lev);
    std::cin.clear(); //清除所有错误标识
    std::cin.ignore(); //丢弃输入缓冲区剩余内容
    // 只有通关成功才提升关卡等级
    if (bLevelComplete) {
        ++Lev;
    }
  }
  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 21:24:03