前期回顾
使用结构体数组
1. 定义结构体数组
栗子1:
有三个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先输入被选人的名字,最后输出各人得票结果
#include<stdio.h>
#include<string.h>
struct Person
{
char name[20];
int count;
} leader[3]={"Li",0,"Zhang",0,"Sun",0};
int main()
{
int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\nResult:\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
return 0;
}
2. 结构体数组应用举例
栗子2:
有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息
#include<stdio.h>
#define N 3
struct Student
{
int num;
char name[20];
float score;
};
int main()
{
struct Student stu[N]={{1001,"zhang",78},{1002,"wang",80},{1003,"li",77}};//定义结构体数组并初始化
struct Student temp;
int i,j,k;
printf("The order is:\n");
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[j].score>stu[k].score) //成绩比较
k=j;
temp=stu[k];
stu[k]=stu[i];
stu[i]=temp;
}
for(i=0;i<N;i++)
{
printf("%6d%8s %6f\n",stu[i].num,stu[i].name,stu[i].score);
}
printf("\n");
return 0;
}