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

C++中关联两个数组并按煎饼数量排序输出人员信息

解决煎饼数量排序问题

你的思路没问题,用两个数组分别存人物编号和对应吃的煎饼数量是可行的,核心是排序时要同步交换编号和对应的煎饼数量,这样才能保证排序后编号和数量一一对应。下面是修改后的代码,用选择排序实现从多到少的排序:

#include <iostream>
using namespace std;

int main() {

    int cc[10]; // 存储每个人吃的煎饼数量
    int pn[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 存储人物编号

    cout << "请输入每个人吃的煎饼数量:\n\n";

    for (int i = 0; i < 10 ; i++){
        cout << "Person " << pn[i] << ": ";
        cin >> cc[i];
    }

    // 选择排序:从多到少排序
    for (int i = 0; i < 9; i++) {
        // 找到当前未排序部分的最大值索引
        int maxIndex = i;
        for (int j = i + 1; j < 10; j++) {
            if (cc[j] > cc[maxIndex]) {
                maxIndex = j;
            }
        }
        // 交换煎饼数量
        swap(cc[i], cc[maxIndex]);
        // 同步交换对应的人物编号
        swap(pn[i], pn[maxIndex]);
    }

    cout << "\n按吃的煎饼数量从多到少排序结果:\n";
    for (int i = 0; i < 10 ; i++){
        cout << "Person " << pn[i] << ": ate " << cc[i] << " pancakes\n";
    }

    return 0;
}

关键说明:

  • 排序部分用了选择排序:每次在未排序的部分找到最大值的位置,然后把它和当前未排序部分的第一个元素交换,同时交换对应的人物编号,这样就能保证编号和数量始终匹配。
  • 原代码里的循环条件i < 10 && n < 10没必要,因为i和n是同步递增的,直接写i < 10就行。
  • 输出格式调整成了题目要求的样式,和示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:11:13