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

为什么我的C++水平条形图代码无法接收用户输入且支持任意数量输入?

现有代码问题梳理
  • 声明了固定长度为1的数组input,无法存储任意数量的输入值
  • 无论用户输入是否合法,都会强制输出usage提示,且提示逻辑仅执行1次,不符合预期
  • 读取到的输入值n未存入数组,后续访问input数组属于读取未初始化的内存,会触发未定义行为
  • 换行符拼写错误为/n,正确应为\n
  • 第二层循环的判断条件j<input[j]逻辑完全错误,无法对应生成指定长度的条形
修复后完整代码
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
    vector<int> input_list;
    int val;
    // 循环读取任意数量正整数,遇到非整数/负数时停止输入
    while (cin >> val) {
        if (val < 0) break;
        input_list.push_back(val);
    }

    // 仅无有效输入时输出usage提示
    if (input_list.empty()) {
        cout << "usage: bargraph integer-list \n";
        return 1;
    }

    // 生成水平条形图
    for (int idx = 0; idx < input_list.size(); idx++) {
        cout << idx << " ";
        for (int cnt = 0; cnt < input_list[idx]; cnt++) {
            cout << "#";
        }
        cout << "\n";
    }
    return 0;
}
使用说明
  • 运行程序后直接输入任意数量的正整数,用空格/换行分隔即可
  • 输入非整数、或者输入负数时,程序自动停止输入并生成条形图
  • 若未输入任何有效正整数直接终止输入,会输出usage提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:39:02