C++个性化问候程序运行报错求助:输入数字后提示‘bash: 1: command not found’
问题排查与解决
嘿,咱们一步步来解决你的问题——先搞定那个bash: 1: command not found的错误,再修复代码里的小bug。
一、先解决程序运行的错误
你看到的bash: 1: command not found,说明你没正确编译运行C++程序,反而直接在bash终端里输入了数字1,把它当成系统命令执行了。正确的编译运行步骤应该是这样:
假设你的代码存在greeting.cpp文件里:
- 打开终端,切换到代码所在的文件夹
- 用g++编译代码:
g++ greeting.cpp -o greeting - 运行编译好的程序:
./greeting
这样就能进入程序的交互界面,输入姓名和数字了,不会再出现bash命令错误。
二、修复代码里的bug
你的代码还有几个小问题,会导致运行异常:
- 姓名存储类型错误:你用了
char name;,char只能存单个字符,输入比如"Mike"这种全名时,只会读取第一个字符'M',剩下的内容会留在输入缓冲区,导致后续数字输入乱掉。应该改成string name;,记得还要加上<string>头文件。 - 多余的分号:代码里有一行
; cin >> Number;,开头的分号是多余的,属于语法错误,直接删掉就行。 - 未处理无效输入:如果用户输入的数字不在1-5之间,程序啥提示都没有就退出了,建议加个else分支给个提示,体验更好。
修复后的完整代码
#include <iostream> #include <string> // 新增string头文件,用来存储全名 using namespace std; int main() { string name; // 替换char为string,能存完整姓名 int Number; cout << "What is your name?" << endl; cin >> name; cout << "Enter a number between 1 and 5:" << endl; cin >> Number; // 去掉了多余的分号 if (Number == 1) { cout << "Hello " << name << "!" << endl; } else if (Number == 2) { cout << "Greetings " << name << "!" << endl; } else if (Number == 3) { cout << "Hiya, how are you " << name << "?" << endl; } else if (Number == 4) { cout << "Howdy! " << name << "!" << endl; } else if (Number == 5) { cout << "What's up " << name << "?" << endl; } else { // 新增无效输入提示 cout << "Oops, that's not a number between 1 and 5!" << endl; } return 0; }
验证效果
按照刚才的编译运行步骤操作:
- 编译:
g++ greeting.cpp -o greeting - 运行:
./greeting
现在输入完整姓名(比如"Alice"),再输入1-5之间的数字,就能得到对应的个性化问候;如果输入了6或者其他无效内容,也会收到友好的错误提示。
内容的提问来源于stack exchange,提问作者Tato812
相关产品推荐
相关产品推荐

