实验十一 结构体(struct)与共用体(union)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十一结构体(struct)与共用体(union)
实验目的
理解并掌握使用不同数据类型的变量组合成一个数据的组合体-结构体与共用体的定义与引用;正确使用结构体数组、结构体与函数及指向结构体的指针。
要点提示
1.结构体定义的一般格式为:
struct 结构体类型名
{数据类型成员名1;
数据类型成员名2;
……
数据类型成员名n;
};
2.结构体变量的说明
struct 结构体类型名结构体变量名;
3.引用结构体成员
结构体变量名.成员名
共用体与结构体有相似的使用形式
实验内容
●结构体的定义与引用
●结构体与函数
●结构体数组
●指向结构体的指针
●共用体的定义与引用
实验步骤
读懂并输入程序,完成填空后输出结果
1.建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。
#include
main()
{struct grade /* 定义结构体类型*/
{int number;
char name;
int math;
int english;
};
struct 【】wanglin; /* 说明结构体变量*/
printf("Please input the number, name, math, english:\n");
scanf("%d,%d,%d",&【】,& wanglin. name,【】& wanglin.english);
printf("wanglin 'grade is: %d/%d/%d\n", wanglin. number, , wanglin.math, wanglin.english);
}
程序执行过程与结果:
Please input the number, name, math, english::
26,A, 85,90
wanglin ' grade is:
#include
main()
{struct grade /* 定义结构体类型*/
{int number;
char name;
int math;
int english;
};struct grade wanglin; /* 说明结构体变量*/
printf("Please input the number, name, math, english:\n");
scanf("%d,%c,%d,%d",&wanglin. number,& wanglin. name,& wanglin. math,& wanglin.english);
printf("wanglin 'grade is: %d/%c/%d/%d\n", wanglin. number, , wanglin.math, wanglin.english);
}
Please input the number, name, math, english:
26,A,85,90
wanglin 'grade is: 26/A/85/90
Press any key to continue
请再建立一个刘芳(liufang)的成绩记录, 比较一下。
2.结构体与函数
main()
{struct /* 局部定义结构*/
{int a;
char b;
}【】;
variable.a=1111;
variable.a=A;
fun(variable.a);
printf(" a=%d\n", variable.a);
printf(" a=%d\n", variable.b);
}
fun(nam)
struct
{int x;
char y;
}【】; /*定义形参*/
{printf(" x1=%d\n",nam.x);
nam.x=2222; /*重新赋值*/
nam.y=B;
printf(" x2=%d\n",nam.x);
printf(" x2=%d\n",nam.y);
return;
}
程序执行结果如下:
main()
{ struct /* 局部定义结构*/
{int a;char b;
}variable;
variable.a=1111;
variable.b='A';
fun(variable.a);
printf(" a=%d\n", variable.a);
printf(" b=%d\n", variable.b);
}
fun(nam)
struct
{int x;
char y;
}nam; /*定义形参*/
{printf(" x1=%d\n",nam.x);
nam.x=2222; /*重新赋值*/
nam.y='B';
printf(" x2=%d\n",nam.x);
printf(" x2=%d\n",nam.y);
return;
}
x1=1111
x2=2222
x2=66
a=1111
b=65
Press any key to continue
3.结构体数组
将作业1稍加改动,建立起3个同学的成绩单。
#include
main()
{struct grade /* 定义结构体类型*/
{int number;
char name;
int math;
int english;
};
struct grade 【】; /* 说明结构体数组, */
printf("Please input the number, name, math, english:\n");
for(i=0;i<2;i++)
{
scanf("%d,%d,%d",&【】,& mate[i]. name,【】& mate[i].english);
printf(" all grade is: %d/%d/%d\n", mate[i]. number, mate[i].name, mate[i].math, mate[i].english);
}
}
#include
main()
{
struct grade /* 定义结构体类型*/