运用结构数组和结构指针解决实际问题。

2. 已知5个学生的姓名(英文汉字均可)、学号(1401~1405)和计算机程序设计课的成绩(百分制),上述信息从键盘循环输入。编写程序,按成绩排序并按名次输出排序结果,即输出5行信息,每行按照“名次 学号 姓名 成绩”的顺序输出。
3. 要求1:定义结构类型struct student,组织学生的四种信息(学号、姓名、成绩、名次)
4. 要求2:用结构数组存储5个学生的信息,即struct student stu[5]; (体会:按成绩排序时,交换数组元素时,信息是整体交换的,不需要再单独维护学生各部分信息之间的一致性)

5. 要求3:进一步改进程序,学生人数N是键盘输入的,利用结构指针,根据输入的N动态分配存储结构数组的空间,即student *p=new student[N]。这样改进后,可以即实现任意数量学生信息的维护。(但是大家应该意识到:按成绩排序时,交换数组元素时,系统要进行大量的内存拷贝)

结构体指针其实是一个指针,它存储的是指向某个结构体的“地址”,所以结构体指针数组存储的其实是指向一组结构体的“地址”数组,它本身并不包含结构体的具体内容(没有被分配内存)

所以当用到他们时,要么重定向,比如:
d=&b; //让d指向b,d存储的是b的地址,这样就能通过d来调用b了

要么用malloc为他们分配内存:
d=(struct h *)malloc(sizeof(struct h));
这样d就指向系统为其分配的一块内存,其内容就是struct h中的东西
温馨提示:答案为网友推荐,仅供参考
相似回答