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

新手求助:如何让C++战斗代码输出用户输入对应指令文本

问题分析与修正代码

你的代码存在几个关键问题,导致无法实现预期功能:

  • main函数返回类型是int,但你在switch分支里返回字符串,这不符合C++语法规则,main的返回值是程序退出状态码,不是用来输出内容的。
  • 定义了很多无用变量(比如int F;、char FIGHT;等),这些变量既没赋值也没使用,属于冗余代码。
  • 未处理未知输入的情况,且UNKNOWN变量未初始化,直接返回会导致未定义行为。
  • 使用toupper需要包含<cctype>头文件,否则可能编译报错。

以下是修正后的代码:

#include <iostream>
#include <cctype> // 用于toupper函数

int main(void){
    using namespace std;

    cout << "What would you like to do?";
    cout <<  "  \n[F]ight";
    cout <<  "  \n[C]ast spell";
    cout <<  "  \n[E]vade and Run away";
    cout <<  "  \n[Q]uit\n";
    
    char c;
    cin >> c;
    
    switch (toupper(c))
    {
        case 'F': 
            cout << "FIGHT" << endl;
            break;
        case 'C': 
            cout << "CAST_SPELL" << endl;
            break;
        case 'E': 
            cout << "EVADE" << endl;
            break;
        case 'Q': 
            cout << "QUIT" << endl;
            break;
        default: 
            cout << "UNKNOWN COMMAND" << endl;
            break;
    }

    return 0; // main函数正常结束返回0
}

关键修改说明

  • 移除了所有无用的冗余变量,只保留必要的输入字符变量c。
  • 将switch分支里的return改为cout输出对应内容,并用break跳出分支。
  • 添加default分支处理未知输入,输出提示信息。
  • 补充了<cctype>头文件以支持toupper函数。
  • main函数最后返回标准的正常退出状态码0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:32:45