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

C++数组中销量最高/最低商品输出异常求助:结果错误或为空

解决销量对应商品名称输出错误/为空的问题

看起来你已经找对了核心思路——通过销量数组的索引关联到名称数组,但输出出错大概率是细节处理上的问题。先把你的问题和未完成的代码整理出来:

我尝试输出数组中销量最高和最低的商品,但输出结果要么错误要么为空,找不到原因。每个商品分别对应价格数组、名称数组和销量数组。我的思路是先找出销量最低的商品,再通过其索引访问名称数组,从而输出商品名称而非最低销量数值。以下是我目前的代码:

#include "stdafx.h" 
#include <string> 
#include <conio.h> 
#include <iostream> 
// 代码未贴全

我先给你梳理几个最容易踩的坑,再给你一个完整的可运行示例:

常见错误原因

  • 数组索引越界:比如初始化最值索引时用了-1,或者循环条件写错(比如i <= 数组长度),导致访问了不存在的数组元素
  • 数组长度不匹配:价格、名称、销量三个数组的元素数量不一致,索引对应关系直接错乱
  • 最值初始化错误:比如把最低销量初始值设为0,如果所有商品销量都大于0,那永远找不到真正的最小值;或者初始索引没设为有效位置(比如0)
  • 输出逻辑疏漏:比如输出时写错了数组名,或者没有正确处理字符串的输出

完整实现示例

下面是一个符合你需求的完整代码,你可以对照自己的代码找差异:

#include "stdafx.h"
#include <string>
#include <iostream>
#include <climits>

using namespace std;

int main() {
    // 三个数组必须长度完全一致,一一对应
    string productNames[] = {"无线耳机", "机械键盘", "鼠标垫", "电竞鼠标"};
    double productPrices[] = {299.0, 399.0, 29.9, 199.0};
    int productSales[] = {350, 120, 500, 280};
    
    // 计算数组长度,避免手动输入出错
    int totalProducts = sizeof(productSales) / sizeof(productSales[0]);

    // 先处理空数组的情况,防止后续遍历出错
    if (totalProducts == 0) {
        cout << "没有商品数据!" << endl;
        _getch();
        return 0;
    }

    // 初始化最值索引为第一个元素的索引(0),这是关键
    int minSalesIdx = 0;
    int maxSalesIdx = 0;

    // 遍历数组,更新最值索引
    for (int i = 1; i < totalProducts; i++) {
        if (productSales[i] < productSales[minSalesIdx]) {
            minSalesIdx = i;
        }
        if (productSales[i] > productSales[maxSalesIdx]) {
            maxSalesIdx = i;
        }
    }

    // 输出结果,通过索引关联名称数组
    cout << "销量最低的商品:" << productNames[minSalesIdx] 
         << ",销量:" << productSales[minSalesIdx] << endl;
    cout << "销量最高的商品:" << productNames[maxSalesIdx] 
         << ",销量:" << productSales[maxSalesIdx] << endl;

    _getch();
    return 0;
}

关键注意点

  1. 严格保证数组长度一致:这是索引能正确对应商品的基础,添加或删除商品时,三个数组要同步修改
  2. 正确初始化索引:从第一个元素的索引(0)开始,不要用-1这类无效值,否则会直接触发越界错误
  3. 动态计算数组长度:用sizeof(数组)/sizeof(数组[0])可以自动获取数组元素数量,避免手动计数出错
  4. 处理边界情况:比如数组为空的场景,提前判断可以避免程序崩溃

你可以对照这些点检查自己的代码,应该就能找到问题所在啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:20:35