禾木的C++拜年应答机器人:智能识问、幽默作答、防追问设计
🎉 **C++ 自动回答年龄的拜年小助手(带防追问机制)** 禾木不想一遍遍重复自己的年龄,我们可以用 C++ 写一个**友好又带点小幽默**的程序: ✅ 输入一次年龄后,自动回答所有“你几岁啦?” ✅ 支持多次提问(模拟亲戚轮番上阵 😅) ✅ 加入温馨提示和防疲劳设计(比如答3次后说“我已经告诉您啦~”) ✅ 使用 `std::string` 和 `std::getline` 安全读取问题(避免 `cin >>` 丢掉换行符) --- ### ✅ 完整可运行 C++ 代码(C++11 及以上): ```cpp #include <iostream> #include <string> #include <cctype> #include <algorithm> int main() { int age = 0; // 👉 第一步:禾木自己输入真实年龄(只输一次) std::cout << "🌱 禾木,请输入你的年龄(数字):"; while (!(std::cin >> age) || age < 0 || age > 150) { std::cin.clear(); std::cin.ignore(10000, '\n'); std::cout << "⚠️ 请输入有效的年龄(0~150之间的整数):"; } std::cin.ignore(); // 清除残留换行符 std::cout << "\n✨ 拜年模式启动!亲戚们开始发问啦~(输入 'quit' 或 '退出' 结束)\n"; std::cout << "💡 提示:你可以说 '你几岁啦?'、'多大啦?'、'今年几岁?' 等类似问题~\n\n"; std::string question; int answerCount = 0; const int MAX_ANSWERS = 3; // 防止被反复拷问 😅 while (true) { std::cout << "👨👩👧👦 亲戚问:"; std::getline(std::cin, question); // 🚪 退出条件(忽略大小写和空格) auto trim_and_lower = [](std::string s) -> std::string { s.erase(s.begin(), std::find_if_not(s.begin(), s.end(), ::isspace)); s.erase(std::find_if_not(s.rbegin(), s.rend(), ::isspace).base(), s.end()); std::transform(s.begin(), s.end(), s.begin(), ::tolower); return s; }; std::string cleanQ = trim_and_lower(question); if (cleanQ == "quit" || cleanQ == "退出" || cleanQ == "exit") { std::cout << "\n👋 禾木抱拳:新年快乐,我们明年再见!\n"; break; } // 🔍 判断是否是“问年龄”的典型句式(关键词匹配) bool isAgeQuestion = ( cleanQ.find("几岁") != std::string::npos || cleanQ.find("多大") != std::string::npos || cleanQ.find("年龄") != std::string::npos || cleanQ.find("岁") != std::string::npos ); if (isAgeQuestion) { answerCount++; if (answerCount == 1) { std::cout << "😄 禾木笑嘻嘻:我今年 " << age << " 岁啦!谢谢关心~\n"; } else if (answerCount == 2) { std::cout << "😊 禾木眨眨眼:还是 " << age << " 岁哦,刚说过呢!\n"; } else if (answerCount >= 3) { std::cout << "🫶 禾木乖巧但坚定:我已经告诉您 " << answerCount << " 次啦~祝您新春吉祥,万事如意!\n"; } } else { std::cout << "🤔 禾木歪头:这个问题我不太懂,要不您再问问年龄?\n"; } std::cout << '\n'; // 空行分隔,更清晰 } return 0; } ``` --- ### 💡 使用说明 & 小贴士: - **编译命令(Linux/macOS)**: ```bash g++ -std=c++11 -o nianmubai nianmubai.cpp ./nianmubai ``` - **Windows(MSVC 或 MinGW)** 同理,支持 `-std=c++11`。 - ✅ 支持中文输入(终端需 UTF-8 编码,如 Windows Terminal / VS Code 终端默认支持)。 - ✅ 输入任意含“几岁”“多大”“岁”等词的问题都会触发回答,智能又接地气。 - ✅ 加了输入校验(防非数字年龄)、防崩溃、防无限循环。 --- ### 🧠 开发小建议(给禾木/小程序员): - 🌟 **用户体验第一**:加表情符号、分段提示、语气词,让程序有“人味儿”; - 🛡️ **健壮性很重要**:用 `cin.clear()` + `ignore()` 防止输入错误卡死; - 📦 **可扩展思路**:未来可以加语音识别(调用 API)、存亲戚名字个性化回复(“王姨,我" + age + "岁啦!”); - 🎁 彩蛋:把程序打包成 `.exe` 或脚本,过年时在亲戚面前“演示AI禾木”,瞬间成为科技小明星! --- ######[AI写代码神器 | 1291点数解答 | 2026-02-27 20:27:56]
- Python 实现:精确统计两数范围内素数个数,附完整代码与优化思路(阿里通义 | 292点数解答 | 2024-11-28 21:36:29)241
- 龙年年会盛宴:热场、表演、游戏嗨翻全场! (字节豆包 | 270点数解答 | 2025-01-16 14:21:53)252
- 超燃年会盛宴:游戏、表演与祝福共迎 2024 新征程!(字节豆包 | 392点数解答 | 2025-01-16 14:34:56)170
- 用 C++、C、Java、Python、Pascal 五种语言实现从整数个位开始分离每一位数字(字节豆包 | 561点数解答 | 2025-12-07 12:45:11)50
- 2024 年三维设计成果:21 项目、双专利论文,新技术研发大突破 (字节豆包 | 764点数解答 | 2024-12-17 20:54:46)191
- 2024 年三维设计:21 项目成果闪耀,自动建模技术创新突破(阿里通义 | 1339点数解答 | 2024-12-17 20:56:07)158
- 2024年三维设计:21个项目成果、新技术突破与专业产出大揭秘(讯飞星火 | 1950点数解答 | 2024-12-17 20:56:19)211
- Matlab编程:血管机器人订购与生物学习,实现104周运营成本最低方案(字节豆包 | 3384点数解答 | 2025-06-22 13:25:13)175
- 哈弗大狗 2026 款 7 月 17 日上市,9.89 万起开启潮玩越野新体验 (讯飞星火 | 351点数解答 | 2025-07-21 17:11:39)75
- 9.89万起,哈弗大狗2026款:轻越野新王者,年轻人的潮玩新宠(讯飞星火 | 355点数解答 | 2025-07-21 17:13:07)72
- 全方位攻略:打造 Element UI 中完美方形 el - card 设计 (字节豆包 | 296点数解答 | 2024-10-10 14:13:41)376
- 无所不包的“设计”世界,你想了解哪一种?(字节豆包 | 62点数解答 | 2026-02-09 16:45:05)22