程 序 调 试 过 程 实 习 小 结 36
实验十 结构体程序设计
【实验目的】
1.掌握结构体类型变量与结构体数组的定义和使用。 2.学会使用结构体指针变量和结构体指针数组。
3.掌握链表的概念,初步学会对链表进行操作。
【上机实习指导】
1.输入出10个学生的学号、姓名和成绩,求出其中的高分者和低分者。 # include “stdio.h” struct student { int num;
char name[20]; int score; };
void main( ) { int i;
struct student st,stmax,stmin; stmax.score=0; stmin.score=100; printf(“\\n input data”); for(i=0;i<10;i++)
{ scanf(“%d%s%d”,&st.num,st.name,&st.score);
if(st.score>stmax.score) stmax=st; if(st.score printf(“\\n hight:]s]”,stmax.num,stmax.name,stmax.score); printf(“\\n low:]s]”,stmin.num,stmin.name,stmin.score); } ①分析程序,上机运行程序。 ②程序中,哪些是对结构体变量的成员引用,哪些是整体引用? ③对于此例来说,用结构体变量作为数据结构有何优越性? 【自编程序上机】 1.有一学生情况如下表所示。编制一个C程序,用冒泡法对该学生情况表按成绩(grade)从低到高进行排序。 37 具体要求如下: ①结构体类型为 struct 结构体名 { int num; char name[8]; char sex; int age; int grade; } ②在程序中,首先输出排序前的学生情况,然后输出排序后的结果,其格式如上表所示(表的框线不要)。 2.定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写5个函数分别实现: 使用结构体数组,输入10名学生的上述信息; 计算每一个学生的总分、平均分; 计算每一门课程的平均分; 查找成绩有不及格的学生信息; 输出全班学生的学号、总分及名次。 3.链表基本操作。 具体要求如下: ①初始时链表为空,即链表的头指针为空。 ②对于上表所示的学生情况表,依次将每个学生的情况作为一个结点插入到单链表的链头(即当前插入的结点将成为链表的第一个结点)。 ③所有学生情况都插入到链表中后,从链头开始,依次输出链表中的各结点值(即每个学生的情况)。输出格式如同上表。 38 【实验报告】 实习时间: 实习地点: 实习机号: 具 体 实 验 内 容 39 程 序 调 试 过 程 实 习 小 结 40