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

C语言结构体操作:如何按出发城市升序排序航班信息结构体数组

问题原因排查

  • 第一个错误是临时交换变量定义错误:你代码中写的info temp[N];定义了一个长度为N的结构体数组,你需要的是单个结构体变量来暂存待交换的元素,修改为info temp;即可。
  • C语言原生支持同类型的结构体直接用=赋值,你想要的直接交换结构体数据的逻辑本身是合法的,不存在语法问题,你遇到的警告完全来自temp变量的类型错误。
  • 补充:你当前冒泡排序的边界参数l和r定义没有实际作用,直接用传入的dim参数写逻辑更易读,另外数组作为函数参数传入时,方括号内的max会被编译器忽略,写为info A[]即可。

修正后的代码

void BubbleSort(info A[], int dim){
    int i, j;
    info temp;
    for (i = 0; i < dim - 1; i++) {
        for (j = 0; j < dim - 1 - i; j++) {
            if (strcmp(A[j].DepartureCity, A[j+1].DepartureCity) > 0) {
                temp = A[j];
                A[j] = A[j+1];
                A[j+1] = temp;
            }
        }
    }
}

其他注意点

  • 结构体定义中要保证N的宏定义足够大,避免存储航班号、城市名时出现数组越界。
  • 如果后续排序性能要求更高,可以直接用C标准库的qsort函数实现排序,不需要手动写冒泡逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:36:03