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

C++实现销量超500包茶叶品牌展示程序运行无输出问题求助

C++茶叶销量筛选程序问题修复

你提供的代码存在以下几处逻辑错误与不符合C++标准的写法:

  • 可变长度数组不符合C标准:C标准原生不支持string Brand [count]、int Amount [count]这类长度由变量决定的数组写法,仅部分编译器做了非标准扩展,运行稳定性无法保证,建议改用std::vector实现动态长度存储,或者提前定义足够大的固定长度数组。
  • 销量输入逻辑错误:内层嵌套的j循环完全冗余,每次输入品牌名后只会给Amount[0]赋值,Amount数组其余元素都是未初始化的垃圾值,后续判断逻辑完全失效。
  • 赋值逻辑写反:筛选符合销量要求的品牌时,代码写为Brand[k]=Output[k],是将未初始化的空Output数组内容覆盖掉正确的品牌名,正确逻辑应为将符合条件的Brand[k]存入Output数组。
  • 输出逻辑错误:未统计符合条件的品牌数量,直接循环count次输出Output数组,会打印大量无意义的空字符串。
  • 冗余变量:定义的int final变量从未被使用,属于无效代码。

修正后的代码如下:

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

int main (){
    int count;
    cout<<"请输入茶叶品牌的数量"<<endl;
    cin>>count;

    // 改用vector实现动态长度存储,符合C++标准
    vector<string> Brand(count);
    vector<int> Amount(count);
    vector<string> Output;

    for(int i =0;i<count;i++) {
        cout<<"请输入第"<<i+1<<"个品牌名称"<<endl;
        cin>>Brand[i];
        cout<<"请输入该品牌的销量"<<endl;
        cin>>Amount[i];
    }

    for(int k=0; k<count; k++){
        if (Amount[k]>500){
            // 符合条件的品牌存入Output数组
            Output.push_back(Brand[k]);
        }
    }

    cout<<"销量超过500包的茶叶品牌如下:"<<endl;
    for (int l=0; l<Output.size(); l++){
        cout<<Output[l]<<endl;
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:07