应用结构体时,需先声明再定义。
本题描述的是用成绩对三个人进行排序。
#include<stdio.h>
typedef struct _DATE
{
int year;
int month;
int day;
}DATE;
typedef struct _STU
{
int id;
char name[20];
char sex;
int age;
DATE BDay;
float score;
char addr[30];
}STU;
void Show(STU* p, int len)
{
for (int i = 0; i < len; ++i)
{
printf("%-6d %-8s %c %-4d %d-%2d-%2d %-6.1f %s\n",
p[i].id,
p[i].name,
p[i].sex,
p[i].age,
p[i].BDay.year,
p[i].BDay.month,
p[i].BDay.day,
p[i].score,
p[i].addr);
}
?【通过结构体变量,访问结构体成员】
}
void SortScorce(STU*p, int len)
{
for (int j = 1; j < len; ++j)
{
int i = j - 1;
STU t = p[j];
while (i >= 0 && p[i].score > t.score)
{
p[i + 1] = p[i];
i–;
}
p[i+1] = t;
}
}
?【插入排序,将一个属插入到一个有序数列中,插入后保持依旧有序】
void main()
{
STU s[3] =
{
{ 9527,“华安”,‘M’,23,1470,3,6,78.9f,“苏州城边” },
{ 9123,“华文”,‘M’,17,1476,5,5,35.9f,“华府” },
{ 9213,“石榴姐”,‘F’,16,1477,12,16,38.2f,“华府柴房” },
};
?【结构体数组】
int len = sizeof(s) / sizeof(s[0]);
Show(s,len);
puts("-----------------");
SortScorce(s, len);
Show(s ,len);
}
运行结果如下