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

如何让输入重复时终止C++无限循环并完成指定年龄响应程序?

如何让循环在输入重复时停止?

要实现重复输入时停止循环,核心思路是记录上一次的输入内容,每次读取新输入后和上一次对比,若NAME和N完全重复则终止循环。同时还要处理输入结束(比如按下Ctrl+D或Ctrl+Z)的情况,避免无意义的死循环。

修改后的代码

#include <iostream>
#include <string>
using namespace std;

int main() {
    string NAME, prev_NAME;
    int N, prev_N = -1; // 初始值设为-1,确保第一次输入不会触发重复判断
    
    // 用cin的读取状态作为循环条件,输入结束或格式错误时自动退出
    while (cin >> ws >> "My" >> "name" >> "is" >> NAME >> "and" >> "I" >> "am" >> N >> "years" >> "old.") {
        // 检查当前输入是否和上一次完全重复
        if (!prev_NAME.empty() && NAME == prev_NAME && N == prev_N) {
            break;
        }
        
        // 按题目要求计算M并输出结果
        if (N >= 10) {
            int division = N / 10;
            int M = N - division;
            cout << NAME << ", you look younger. I thought you were " << M << " years old." << endl;
        }
        
        // 更新上一次的输入记录
        prev_NAME = NAME;
        prev_N = N;
    }
    
    return 0;
}

关键细节说明

  • cin >> ws:跳过输入开头的空白字符(换行、空格等),保证每次读取的都是完整的目标格式行。
  • 初始值设置:prev_N设为-1(题目规定N≥10),prev_NAME为空,第一次输入时不会触发重复判断。
  • 重复判断逻辑:只有当prev_NAME非空(即已经有过输入),且当前的NAME和N与上一次完全一致时,才执行break退出循环。
  • 循环条件优化:把while(true)改成while(cin >> ...),当输入流结束或格式不匹配时,cin会进入失败状态,自动终止循环,避免死循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:11:28