编写一个C语言程序,该程序需实现以下功能:
1.定义一个结构体Person,包含姓名(char数组)、年龄(int)和性别(char)三个成员。
2.定义一个函数void sortPersonsByAge(struct Person※ persons, int num),该函数接收一个Person类型的指针数组和数组的长度,按照年龄对数组中的Person进行升序排序。排序算法需使用归并排序(Merge Sort)。
3.在主函数中,创建一个包含至少10个Person的数组,并初始化这些Person的姓名、年龄和性别。
4.调用sortPersonsByAge函数对数组进行排序。
5.打印排序后的数组。
程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
struct Person
{
char name[20];
int age;
char sex;
};
void sortPersonsByAge(struct Person* persons, int num);
int main()
{
struct Person persons[10];
int i;
for (i = 0; i < 10; i++)
{
printf("请输入第%d个人的信息\n", i + 1);
scanf("%s %d %c", &persons[i].name,&persons[i].age, &persons[i].sex);
}
sortPersonsByAge(persons, 10);
printf("name\tage\tsex\n");
for (i = 0; i < 10; i++)
{
printf("%s\t%d\t%c\n", persons[i].name, persons[i].age, persons[i].sex);
}
}
void sortPersonsByAge(struct Person* persons, int num)
{
int i,j, min;
struct Person temp1;
for (i = 0; i < num - 1; i++)
{
min = i;
for (j = i+1; j < num; j++)
{
if (persons[min].age > persons[j].age)min = j;
}
if (min != i)
{
temp1 = *(persons + min);
*(persons + min) = *(persons + i);
*(persons + i) = temp1;
}
}
}