实验8-结构体
- 格式:doc
- 大小:41.50 KB
- 文档页数:4
《高级语言程序设计》实验报告
实验序号:8 实验项目名称:结构体
一、实验目的及要求
1、掌握结构体变量的定义和使用;
2、掌握结构体数组的定义和使用;
3、了解结构指针的定义和使用
二、实验设备(环境)及要求
使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤
1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
【实验要求】
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最高的学生数据都在主函数种输出。
【实验提示】
(1)结构体定义
struct Student
{
int num;//学号
char name[20];//班级注意字节长度
char classname[20];//班级
float score[3];//三门课程成绩
float aver_score; //平均分
}
(2)数据组织提示:
在主函数中定义一个结构体数组。
Student stu[20] //定义有20个变量的元素的结构体数组(根据需要确定数组的大小)。
(3)结构体数组使用
①循环输入学生信息:
②平均分计算函数,以数组名作参数
void averagescore(student stu[], int number)
{
int i;
for(i = 0; i<= number; i++)
{
Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0
}
}
③求平均分最高的学生
int averagescore(student stu[], int number)
{
int k = 0;
//查找最高平均分并记录在数组中的下标值
for( int i = 0; i<= number; i++)
{
………
}
return k; //返回最高平均分数组元素的下标
}
【测试数据】
自己设计一组测试数据。
运行结果截图:
【思考与扩展】
如果这样定义结构体
typedef struct Student
{
int num;//学号
char name[20];//姓名注意字节长度
char classname[20];//班级
float score[3];//三门课程成绩
float aver_score; //平均分
} STU,* pSTU;
说明如下三条语句的含义:
student stu1;
STU stu2;
pSTU pstu;
2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。
运行结果截图:
3.定义一个结构体变量(包括年、月、日)。计算某年某月某日是本年中第几天?注意闰年问题。
运行结果截图:
四、分析与讨论
对上机实践结果进行分析,上机的心得体会。
成绩
五、教师评语
签名:
日期:
附源程序清单:
1.
2.
#include
void main()
{
struct worker
{
char name[20];
int year,sal;
}
worker[5]=
{
{"Adam",5,1000},
{"Lunna",10,2000},
{"Tax",20,3000},
{"Lee",40,4000},
{"Komain",50,5000},
};
int i;
printf("\n%-10s%-10s%-10s","Name","Year","Salary");
for(i=0;i<5;i++)
printf("\n% -10s%-10d%-10d",worker[i].name,worker[i].year,worker[i].sal);
for(i=0;i<5;i++)
if(worker[i].year>30)
worker[i].sal=worker[i].sal+100;
printf("\n%-10s%-10s%-10s","Name","Year","Salary");
for(i=0;i<5;i++)
printf("\n%-10s%-10d%-10d",worker[i].name,worker[i].year,worker[i].sal); }
3.