C语言程序设计实验十一 结构体与共用体(二)
- 格式:docx
- 大小:17.92 KB
- 文档页数:3
11 结构体与共用体 (1)11.1 定义一个结构的一般形式 (1)11.2 结构类型变量的说明 (2)11.3 结构变量成员的表示方法 (4)11.4 结构变量的赋值 (4)11.5 结构变量的初始化 (5)11.6 结构数组的定义 (5)11.7 结构指针变量的说明和使用 (7)11.7.1 指向结构变量的指针 (7)11.7.2 指向结构数组的指针 (9)11.7.3 结构指针变量作函数参数 (10)11.8 动态存储分配 (11)11.9 链表的概念 (12)11.10 枚举类型 (14)11.10.1 枚举类型的定义和枚举变量的说明 (14)11.10.2 枚举类型变量的赋值和使用 (15)11.11 类型定义符typedef (16)11 结构体与共用体11.1 定义一个结构的一般形式在实际问题中,一组数据往往具有不同的数据类型。
例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。
显然不能用一个数组来存放这一组数据。
因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。
为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。
它相当于其它高级语言中的记录。
“结构”是一种构造类型,它是由若干“成员”组成的。
每一个成员可以是一个基本数据类型或者又是一个构造类型。
结构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。
如同在说明和调用函数之前要先定义函数一样。
定义一个结构的一般形式为:struct 结构名{成员表列};成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};在这个结构定义中,结构名为stu,该结构由4个成员组成。
实验十一结构体(struct)与共用体(union)实验目的理解并掌握使用不同数据类型的变量组合成一个数据的组合体-结构体与共用体的定义与引用;正确使用结构体数组、结构体与函数及指向结构体的指针。
要点提示1.结构体定义的一般格式为:struct 结构体类型名{数据类型成员名1;数据类型成员名2;……数据类型成员名n;};2.结构体变量的说明struct 结构体类型名结构体变量名;3.引用结构体成员结构体变量名.成员名共用体与结构体有相似的使用形式实验内容●结构体的定义与引用●结构体与函数●结构体数组●指向结构体的指针●共用体的定义与引用实验步骤读懂并输入程序,完成填空后输出结果1.建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。
#include <stdio.h>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,90wanglin ' grade is:#include <stdio.h>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,90wanglin 'grade is: 26/A/85/90Press any key to continue请再建立一个刘芳(liufang)的成绩记录, 比较一下。
C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。
2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。
要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。
3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。
以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。
8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。
实验十一结构体与共用体(二)
一、目的和要求
1、掌握结构体类型方法以及结构体变量的定义和引用。
2、掌握运算符”.”和”->”的应用。
3、掌握指向结构体变量的指针变量的应用。
4、本实验在学习了第7章和第8.1节后进行。
二、实验内容和步骤
1、分析、调试、运行下列程序,记录程序中的错误之处并给予改正,写出正确的运行结果。
#include <stdio.h>
struct st
{ int x;
int y;
}*p;
int a[]={10,20,30,40};
struct st sb[]={2,&a[0],4,&a[1],6,&a[2],8,&a[3]};
main()
{ p=sb;
printf(“\n%d”,p->x);
printf(“\n%d”,(++p)->x);
printf(“\n%d”,(++p)->y);
}
2、下列程序实现:从键盘上输入年、月、日,计算并输出该日在该年中是第几天(注意闰年问题)。
调试运行该程序,写出程序运行结果。
#include <stdio.h>
struct date
{ int day;
int month;
int year;
int yes;
};
static int day_tab[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},
{0,31,28,31,30,31,30,31,31,30,31,30,31}}
main()
{ int i,leap
struct date *p;
printf(“enter year/month/day:”);
scanf(“%d,%d,%d”,&(*p).year,&(*p).month,&(*p).day);
leap=p->year%4==0&&p->year%100!=0||p->year%400==0;
p->yes=p->day;
for(i=0;i<p->month;i++)
p->yes+=day_tab[leap][i];
printf(“the day in the passed year is %d\n”,p->year);
}
三、实验结果
四、分析与讨论
(1)理解运用指向结构体变量的指针访问结构体成员的方法。
(2)运用结构体变量访问结构体成员的方法重新编写第2题程序,并上机调试运行。