实验九结构体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九结构体、共用体与枚举类型
实验时间:年月日
【实验目的】
1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;
2、掌握结构体类型变量成员赋值和引用方法;
3、学会使用结构体数组;
4、掌握共用体和枚举类型数据的使用。
【实验内容】
1、结构体类型的定义;
2、结构体变量的定义、赋值与使用;
3、结构体数组与结构体指针的定义与使用;
4、共用体类型的定义,共用体变量的定义与使用;
5、枚举类型的定义与使用;
6、链表与动态内存分配;
7、自定义类型的使用。
【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证与分析题
1、写出程序ex9_1.c运行的结果。
/*文件名ex9_1.c*/
#include
struct HAR
{
int x,y;
struct HAR *p;
}h[2];
int main()
{
h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=&h[1];
h[1].p=h;
printf("%d %d\n",(h[0].p)->x,(h[1].p)->y);
return 0;
}
2、写出程序ex9_2.c运行的结果。
/*文件名ex9_2.c*/
#include "stdio.h"
void main()
{
int z;
union data
{
int x;
int y;
}a;
a.x=3;
a.y=6;
z=a.x+a.y;
printf("z=%d\n",z);
}
3、阅读程序ex9_3.c,预测结果并上机验证。
/*文件名ex9_3.c*/
#include
void main()
{
union data
{
int i;
char ch;
float f;
}a,b,c;
a.i=9;
b=a;
c=b;
printf("b.i=%d,c.i=%d\n",b.i,c.i);
}
4、运行下列程序,写出结果
/*文件名ex9_4.c*/
#include
void main()
{
struct List
{
int data ;
struct List *next;
};
struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p;
p=&a[1] ;
printf("%d\n",--p->data);
printf("%d\n",p->next->data);
printf("%d\n",p--->data);
}
三、编程题:
1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_5.c命名,保存在自己的文件夹内。
2、试用结构体定义一个学院教师的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_6.c命名,保存在自己的文件夹内。
试编程求这5位同学该门课程的平均成绩,并输出成绩不及格的同学的班级、学号、姓名与成绩等信息。源程序以ex9_7.c命名,保存在自己的文件夹内。
试编程求这5位职工的平均月收入,并输出月收入小于3000元的职工的部门、工号、姓名与月收入等信息。源程序以ex9_8.c命名,保存在自己的文件夹内。
5、已知仓库存书的信息如下表所示
试编程求书的平均价格,并输出价格小于30元的书籍的书号、书名、作者、出版社、出版日期,价格等信息。源程序以ex9_9.c命名,保存在自己的文件夹内。【实验小结】
应知:
1、结构体、共用体、枚举类型的概念及其定义方法;
2、结构体变量、共用体变量、枚举类型变量的定义;
3、动态内存分配的概念及动态内存分配函数。
4、链表的概念。
应会:
1、结构体变量、共用体变量、枚举类型变量的使用;
2、结构体数组及结构体指针的使用;
3、动态内存分配函数的使用;
4、链表的使用。
【实验思考】
1、当定义一个结构体变量时,系统为它分配的内存空间是多少?
2、结构体与数组的区别是什么?
3、用结构体指针作为函数参数与用结构体变量作为函数参数有什么不同?