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')
}
}