以下是一个示例代码,可以按照字母顺序对姓名进行排序:
#include
#include
struct Person {
char name[50];
int age;
};
void sortByName(struct Person people[], int size) {
struct Person temp;
int i, j;
for (i = 0; i < size - 1; i++) {
for (j = i + 1; j < size; j++) {
if (strcmp(people[i].name, people[j].name) > 0) {
temp = people[i];
people[i] = people[j];
people[j] = temp;
}
}
}
}
int main() {
struct Person people[3];
strcpy(people[0].name, "John");
people[0].age = 25;
strcpy(people[1].name, "Alice");
people[1].age = 30;
strcpy(people[2].name, "Bob");
people[2].age = 20;
sortByName(people, 3);
printf("Sorted by name:\n");
for (int i = 0; i < 3; i++) {
printf("Name: %s, Age: %d\n", people[i].name, people[i].age);
}
return 0;
}
在此示例中,我们定义了一个Person
结构体,其中包含一个name
字段和一个age
字段。我们还定义了sortByName
函数,它接受一个Person
结构体数组和数组大小作为参数。函数使用嵌套循环来比较每对元素的姓名,并根据需要交换它们的位置,以使姓名按字母顺序排序。在main
函数中,我们创建一个Person
结构体数组,并使用strcpy
函数将姓名和年龄赋值给每个结构体的字段。然后,我们调用sortByName
函数来对结构体数组按姓名排序。最后,我们使用循环遍历结构体数组,并使用printf
函数打印每个人的姓名和年龄。