c语言怎么把100个人的名字按姓名排序输出

Python015

c语言怎么把100个人的名字按姓名排序输出,第1张

1 将100个人的姓名,存到二维字符数组

2 通过strcmp比较。 通过strcpy赋值。 对二维字符数组进行排序

3 输出排序的结果。

排序中,除了比较和赋值与普通的整型数组排序不同外,其他的 都一样。

k==i 说明排序前k,i指向一个人的id,排序后还是指向一个人,所以没必要交换

strcmp(name[k],name[j])>0strcmp 字符串比较函数,

这是一个选择排序算法,每趟求出最大人名的下标,并交换

#include <stdio.h>

void sort_name(Staff *p) {

int i,j,max

Staff b

for(i = 0i <T - 1i++) { // 应该是T - 1,不是T

max = i

for(j = i + 1j <Tj++) {

if(strcmp((p + max)->name,(p + j)->name) >0)

max = j

}

if(max != i) {

b = *(p + max)

*(p + max) = *(p + i)

*(p + i) = b

}

} // 这儿添加了"}"

for(i = 0i <Ti++) {

printf("%s ",(p + i)->id)

printf("%s ",(p + i)->name)

printf("%s ",(p + i)->sex)

printf("%d %d %d ",(p + i)->data.year,(p + i)->data.month,(p + i)->data.day)

printf("%.2lf ",(p + i)->post_wage)

printf("%.2lf ",(p + i)->subsidies)

printf("%.2lf ",(p + i)->withholding)

putchar('\n')

}

}