新手求助:如何让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
相关产品推荐
相关产品推荐

