程序设计思想:每一个等级的学生名字存到一个指针数组中,使得指针数组的某个元素指向每一个该等级下的学生名字对应的数组首地址(即字符数组名),最后遍历每一个等级下的指针数组,打印数组的长度以及保存的所有名字信息
程序关键点:1:当要输出一定格式的数据时候,可以使用结构定义要输出的数据,如本题要输出每个等级的人数和姓名,就可以定义一个结构体,成员是该等级的人数和指向每个姓名的指针数组
2:指针数组成员char *nameList[30]是指的每个nameList元素是一个指针,指向record[i].name,这样最后输出就可以遍历该指针数组指向的地址,从而达到输出每个人的名字的效果
3:先获取该学生的等级,那么对应每一个学生的等级-'A'=packageList对应的数组下标(从A开始到E),就对应packList[0,1,2,3,4,5]的nameLishtLength+1,最后统计完人数,直接输出packList[i].nameListLength,就是每个等级的人数,同时要将字符指针数组指向地址空间,packageList[当前学生等级-'A']的nameList[0,1,2——当前等级下的人数]指向record[i].name(即指向存储当前学生名字字符串的首地址)
**C语言中字符相减可以对应赋值为相应的整数
4:printf("%c:%d",i+'A',package[0-5]的人数)就是分别输出字符A-E,**A-E的格式输出可以用i+'A',用整数对应的ascii码对应字符来输出
5:打印出来的学生名字格式为,除了最后一个元素最后是; 前面的元素后都是一个',' ,所以输出的格式是在输出每个学生名前加一个逗号 ,而先用一个判断语句第一个元素前不用输出逗号,这样最后一个元素后就不会有逗号,在打印完全部" ,学生姓名 "循环后添加一个;
6:输出学生的姓名,学生的姓名是用指针数组指向的,%s是输出字符串的替代符,引用是package[i].nameList[0——len],即可输出每个指针指向的学生名字