使用结构体数组
使用结构体数组
定义结构体数组【例9.3】有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果#include<string.h>#include<stdio.h>namecountstructPerson//声明结构体类型structPersoncharname[20];1/候选人姓名ILi0//候选人得票数int count;0ZhangHleader[3]={"Li",0"Zhang"0"Sun",0]://定义结构体数组并初始化0Sunint main()int ij:1/定义字符数组charleader_name[20]:口CAWINDOWSIsystem32)cmd.exeXfor(i=1:;<=10;i++)//输入所选的候选人姓名scanf("%s",leader_name):for(j=0;j<3:j++)hangangif(strcmp(leader_name,leaderJ.name)==0)leader).count++;?printf("\nResult:/n"):ansfor(i=0;i<3;i++)Result:printf("%5s:%d\n",leader[i].name,leader[i].count);Li:4retum 0;Zhang:3Sun:31请按任意键继续
定义结构体数组 【例9.3】有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入 被选人的名字,最后输出各人得票结果。 #include <string.h> #include <stdio.h> struct Person //声明结构体类型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; } name count Li 0 Zhang 0 Sun 0
定义结构体数组(1)定义结构体数组一般形式是structPerson1charname[20];1struct结构体名int count;【成员表列数组名[数组长度]leader[3];②先声明一个结构体类型,然后再用此类型定义结构体数组结构体类型数组名[数组长度]structPersoncharname[20]int count;1structPersonleader[3]://leader是结构体数组名=初值表列;(2)对结构体数组初始化的形式是在定义数组的后面加上structPersonleader3]=fLi"0,"Zhang".0,"Sun"0
定义结构体数组 (1) 定义结构体数组一般形式是 ① ② 先声明一个结构体类型,然后再用此类型定义结构体数组 (2) 对结构体数组初始化的形式是在定义数组的后面加上: struct 结构体名 {成员表列} 数组名[数组长度]; struct Person { char name[20]; int count; } struct Person leader[3]; //leader是结构体数组名 结构体类型数组名[数组长度]; ={初值表列}; struct Person { char name[20]; int count; } leader[3]; struct Person leader[3]= {"Li",0,"Zhang",0,"Sun",0};
#include<stdio.h>结构体数组的应用举例struct Student//声明结构体类型structStudentint num;【例9.4】有n个学生的信息(包括学号charname[20]:floatscore:姓名、成绩),要求按照成绩的高低顺1:序输出各学生的信息。int main()structStudent stu[5]={(10101,"Zhang".78].[10103,"Wang".98.5].[10106,"L".86)(10108."Ling".73.5).(10110."Sun".100)//定义结构体数组并初始化1/定义结构体变量temp,用作交换时的临时变量structStudenttemp:constint n=5://定义常变量nint ij.k;printf("The order is:In"):for(i=0;i<n-1;i++)(k=i.for(j=i+1:j<n:j+ +)if(stu[].score>stu[k].score)1/进行成绩的比较k=j://stu[k]和stu元素互换temp=stu[k]:stu[k]=stu[i];stu[i]=temp;口XC:(WINDOWS)system32)cmd.exe1heordfor(i=0;i<n;i++)10110Sun100.001010398.50Vangprintf("%6d%8s%6.2f\n",stu[i].num,stu[i].name,stu[i].score);Li1010686.00printf("In"):0101Zhang78.0010108Ling73.50return O请按任意键继续
结构体数组的应用举例 【例9.4】有n个学生的信息(包括学号、 姓名、成绩),要求按照成绩的高低顺 序输出各学生的信息。 #include <stdio.h> struct Student //声明结构体类型struct Student { int num; char name[20]; float score; }; int main() { struct Student stu[5]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86}, {10108,"Ling",73.5},{10110,"Sun",100}}; //定义结构体数组并初始化 struct Student temp; //定义结构体变量temp,用作交换时的临时变量 const int n=5; //定义常变量n 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; //stu[k]和stu[i]元素互换 } for(i=0;i<n;i++) printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score); printf("\n"); return 0; }
结构体指针
结构体指针