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
相关产品推荐
相关产品推荐

