C语言如何将结构体中的所有成员按照其中一个成员的排序方式输出?

2024-12-16 02:52:36
推荐回答(2个)
回答1:

将结构体数组SI[MAX]使用排序算法然后输出即可。

以下给题主列出对SI[MAX]的冒泡排序代码:

void bubbleSort(struct Salary_Info arr[], int len) {
int i, j
struct Salary_Info temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}

调用bubbleSort函数:

bubbleSort(SI, MAX) /*注意这里的MAX需要换成实际的数组长度(职工人数)*/

回答2:

可以使用qsort函数进行排序,这个可以自定义排序的规则。
struct Salary_info{
int Card_No;
char name[20];
};

int cmp_Card_No(const void *a,const void *b)
{
struct Salary_info *aa = (struct Salary_info *)a;
struct Salary_info *bb = (struct Salary_info *)b;

return (aa->Card_No > bb->Card_No ? 1 : -1 );
}
int main()
{
struct Salary_info SI[3] ={{3,"LiBai"},{1,"LiSi"},{2,"LiWu"}};
qsort(SI,3,sizeof(SI[0]),cmp_Card_No);
int i;
for(i = 0;i < 3;i ++)
{
printf("ID:%d name:%s\n",SI[i].Card_No,SI[i].name);
}
return 0;
}