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

C++冒泡排序程序输出内存地址异常及均值中位数实现问题

C++家庭规模统计程序问题修复

核心错误原因

  • 直接输出数组名得到内存地址:C++中cout输出数组名时,数组会退化为首元素指针,打印的结果就是数组的内存首地址,需要遍历数组逐个输出元素才能得到正确内容。
  • 排序长度错误:当前代码用sizeof(householdSizes)/sizeof(householdSizes[0])得到的是数组总容量300,而非实际输入的有效数据条数,未输入的位置都是垃圾值,会导致排序结果完全错误,应该使用输入循环结束后记录的有效条数x作为排序长度。
  • 缺少sum累加逻辑:输入环节没有累加每个家庭规模到sum变量,无法后续计算均值。
  • 缺少均值、中位数的计算与输出逻辑。

修复后完整代码

// HouseholdSize.cpp - 本程序通过冒泡排序对最多300条家庭规模数据升序排列,输出均值和中位数
// 输入:交互式输入家庭规模,输入999结束
// 输出:家庭规模的均值和中位数

#include <iostream>
using namespace std;

void swapping(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

void bubbleSort(int householdSizes[], int size) {
    for(int i = 0; i < size; i++) {
        bool swaps = false;
        for(int j = 0; j < size - i - 1; j++) {
            if(householdSizes[j] > householdSizes[j+1]) {
                swapping(householdSizes[j], householdSizes[j+1]);
                swaps = true;
            }
        }
        if(!swaps) break;
    }
}

int main() 
{
    const int SIZE = 300;
    int householdSizes[SIZE];
    int x = 0;
    int householdSize = 0;
    double sum = 0;
    double mean = 0;
    double median = 0;

    cout << "请输入家庭规模,输入999退出: ";
    cin >> householdSize;

    while(x < SIZE && householdSize != 999) {
        householdSizes[x] = householdSize;
        sum += householdSize; // 累加总和用于计算均值
        x++;
        cout << "请输入家庭规模,输入999退出: ";
        cin >> householdSize;
    }

    if(x == 0) {
        cout << "未输入任何有效数据" << endl;
        return 0;
    }

    // 排序,仅传入有效数据长度x
    bubbleSort(householdSizes, x);

    // 输出排序后的数组
    cout << "排序后的家庭规模:";
    for(int i = 0; i < x; i++) {
        cout << householdSizes[i] << " ";
    }
    cout << endl;

    // 计算均值
    mean = sum / x;
    cout << "均值:" << mean << endl;

    // 计算中位数
    if(x % 2 == 1) {
        median = householdSizes[x/2];
    } else {
        median = (householdSizes[x/2 -1] + householdSizes[x/2]) / 2.0;
    }
    cout << "中位数:" << median << endl;

    return 0;
}

额外优化说明

  • 移除了原代码中未使用的头文件,减少编译开销
  • 增加了空输入的校验,避免除以0的错误
  • 修正了swaps变量的类型为bool,和实际使用逻辑匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:15:01