创建一个以结构(或指向结构的指针)作为参数的函数,并按字母顺序对名称进行排序的问题涉及到函数的定义和参数传递,以及对结构体的操作和排序算法的应用。
函数的定义:
#include <stdio.h>
#include <string.h>
// 定义结构体
struct Person {
char name[50];
int age;
};
// 按字母顺序对名称进行排序的函数
void sortNames(struct Person* people, int numPeople) {
int i, j;
struct Person temp;
for (i = 0; i < numPeople - 1; i++) {
for (j = 0; j < numPeople - i - 1; j++) {
if (strcmp(people[j].name, people[j + 1].name) > 0) {
temp = people[j];
people[j] = people[j + 1];
people[j + 1] = temp;
}
}
}
}
int main() {
// 创建结构体数组
struct Person people[5] = {
{"John", 25},
{"Alice", 30},
{"Bob", 20},
{"David", 35},
{"Cindy", 28}
};
int numPeople = sizeof(people) / sizeof(people[0]);
// 调用排序函数
sortNames(people, numPeople);
// 打印排序后的结果
for (int i = 0; i < numPeople; i++) {
printf("Name: %s, Age: %d\n", people[i].name, people[i].age);
}
return 0;
}
该程序定义了一个结构体 Person
,包含了姓名和年龄两个成员变量。然后定义了一个以结构体指针作为参数的函数 sortNames
,该函数使用冒泡排序算法对传入的结构体数组按照姓名进行字母顺序排序。最后在 main
函数中创建了一个结构体数组 people
,并调用 sortNames
函数对其进行排序,最后打印排序后的结果。
该程序的输出结果为:
Name: Alice, Age: 30
Name: Bob, Age: 20
Name: Cindy, Age: 28
Name: David, Age: 35
Name: John, Age: 25
该程序的应用场景可以是在需要对一组结构体按照某个字段进行排序的情况下使用,比如对学生信息按照姓名进行排序、对员工信息按照工号进行排序等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云