实验十一 结构体(struct)与共用体(union)

实验十一 结构体(struct)与共用体(union)
实验十一 结构体(struct)与共用体(union)

数组指针结构体实验报告

验证性实验:数组指针结构体实验报告 1.实验目的 (1)复习c++语言数组的用法。 (2)复习c++语言指针的用法。 (3)复习c++语言结构体的用法。 (4)理解算法时间复杂度分析的基本方法。 (5)通过实验程序,分析它们的时间复杂度。 2.实验内容 (1)将1~10存入数组a[10],并将其逆序输出。 (2)用指针方式编写程序:从键盘输入10个整数数据,并存入数组,要求将10个数中最大的数与第1个输入的输交换:将10个数中最小的数和最后一个输入的数交换。(3)有5个学生,每个学生的数据包括学号、姓名3门课的成绩、平均分。 要求:从键盘依次输入5个学生的学号、姓名3门课的成绩,自动计算3门课的平均分,将5个学生的数据在屏幕上输出。 3.实验结果 (1)#include void main() { int i,a[10]; for (i=0;i<=9;i++) a[i]=i+1; for (i=9;i>=0;i--) printf("%3d",a[i]); printf("\n"); } (2)#include void main() { int a[10],*p,*max,*min,k; for (p=a;p*p) min=p;

} p=a; if(*max==*(p+9)&&*min==*p) { k=*p; *p=*(p+9); *(p+9)=k; } else if(*max==*(p+9)) { k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(9+p)=k; } else { k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k; } for(p=a;p struct STUDENT { char id[10]; char name[8]; int score[3]; double ave; }stu[5]; void main() { int num=5,i,j; for(i=0;i

第11章 结构体与共用体

第十一章结构体与共用体 结构体变量引用规则: (1)不能将一个结构体变量作为一个整体进行输入和输出;只能对结构体变量中的各个成员分别进行输入和输出。“.”是成员(分量)运算符,它在所有的运算符中优先级最高。 (2)若成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。 (3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。 (4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。 —>是指向运算符,优先级为第一级。 结构体变量所占的内存长度是各成员所占内存长度之和。每个成员分别占有其自己的内存单元。 共用体变量所占的内存长度等于最长的成员的长度。 只先有定义了共用体变量才能引用它,而且不能引用共用体变量,而只能引用共用体变量中的成员。 将一个变量定义为结构体类型:不仅要求指定变量为结构体类型,而且要求指定为某一特定结构体类型。 类型与变量的区别: 定义时先定义结构体类型,然后定义变量。类型不分配空间,变量分配空间。 可以采取以下3种方法定义结构体类型变量: (1)先声明结构体类型再定义变量名 例如:struct student student1, student2; | | | 结构体类型名结构体变量名 (2)在声明类型的同时定义变量;这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列; (3) 直接定义结构体类型变量 其一般形式为: struct { 成员表列 }变量名表列; 即不出现结构体名。 引用结构体变量中成员的方式为 结构体变量名.成员名

结构体与共用体小结

结构体与共用体小结 一,结构体得概念与定义 1,结构体得定义 struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }; 这里数据类型可以就是复合类型,例如又就是一个结构体类型,即嵌套; 2,结构体变量得定义 struct 结构体名变量名1,变量名2,,,变量名n; 或: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2;

或: struct { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2; 三种方式,第三种方式得话,每次要定义这个类型得结构体变量都要重复得写这一段代码; 其实定义了结构体后,struct 结构体名就就是一种新得类型,上述语句就像声明变量一样; 3,结构体变量得引用 只能对结构体变量中得各个成员分别输出,不能对一个结构体变量作为一个整体输出; 嵌套得结构体类型得引用: 结构体变量名、结构体类型成员名、内嵌结构体得成员名; 4,结构体变量得初始化 struct 结构体名变量名= {初始化数据};

或者在定义得时候就初始化: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }变量名= {初始化数据}; 二,结构体数组 1,结构体数组得定义举例struct stu { int stu_nu; char name[20]; float score; }; struct stu student[5]; 或者: struct stu { int stu_nu;

char name[20]; float score; }student[5]; 或者: struct { int stu_nu; char name[20]; float score; }student[5]; 跟定义结构体变量得三种形式就是一样得,只不过这里每次定义得结构体变量就是一个数组;每一个student[i]都就是struct stu类型得; 2,结构体数组得初始化与引用 略; 三,结构体与指针 1,指向结构体得指针得定义,同上,也就是三种形式; struct employees employee1,*p1; 或者: struct employees

数据结构习题及答案-第11章 文件

第十一章文件 一、选择题 1. 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址,因为散列函数是一对一的关系,则选择好的()方法是散列文件的关键。【哈尔滨工业大学 2001二、5 (2分)】 A. 散列函数 B. 除余法中的质数 C. 冲突处理 D. 散列函数和冲突处理 2. 顺序文件采用顺序结构实现文件的存储,对大型的顺序文件的少量修改,要求重新复制整个文件,代价很高,采用()的方法可降低所需的代价。【北京邮电大学 2000 二、 8 (20/8分)】 A. 附加文件 B. 按关键字大小排序 C. 按记录输入先后排序 D. 连续排序 3. 用ISAM组织文件适合于()。【中科院软件所 1998】 A.磁带 B.磁盘 4.下述文件中适合于磁带存储的是()。【中科院计算所 2000 一、7(2分)】 A. 顺序文件 B. 索引文件 C. 散列文件 D. 多关键字文件 5. 用ISAM和VSAM组织文件属于()。 A. 顺序文件 B. 索引文件 C. 散列文件 【中国科技大学 1998 二、5(2分)中科院计算所 1998 二、5(2分)】 6. ISAM文件和VASM文件属于()。【山东大学 2001 二、5 (1分)】 A. 索引非顺序文件 B. 索引顺序文件 C. 顺序文件 D. 散列文件 7. B+树应用在()文件系统中。【北京邮电大学 2001 一、1(2分)】 A. ISAM B. VSAM 二、判断题 1. 文件是记录的集合,每个记录由一个或多个数据项组成,因而一个文件可看作由多个记录组成的数据结构。【长沙铁道学院 1998 一、5 (1分)】 2. 倒排文件是对次关键字建立索引。【南京航空航天大学 1997 一、10(1分)】 3. 倒排序文件的优点是维护简单。【南京航空航天大学 1995 五、10(1分)】 4. 倒排文件与多重表文件的次关键字索引结构是不同的。【西安交通大学 1996 二、6 (3分)】 5. Hash表与Hash文件的唯一区别是Hash文件引入了‘桶’的概念。【南京航空航天大学1996六10(1分)】 6. 文件系统采用索引结构是为了节省存储空间。【北京邮电大学 2000 一、10 (1分)】 7. 对处理大量数据的外存介质而言,索引顺序存取方法是一种方便的文件组织方法。 【东南大学 2001 一、1-10 (1分)】 8. 对磁带机而言,ISAM是一种方便的稳健组织方法。【中科院软件所 1997 一、10(1分)】 9. 直接访问文件也能顺序访问,只是一般效率不高。【北京邮电大学 2002 一、10(1分)】 10. 存放在磁盘,磁带上的文件,即可以是顺序文件,也可以是索引结构或其他结构类型的文件。 【山东大学 2001 一、7 (1分)】 11. 检索出文件中的关键码值落在某个连续的范围内的全部记录,这种操作称为范围检索。对经常需要做范围检索的文件进行组织,采用散列法优于顺序检索法。【中山大学 1994 一、

结构体实验报告

实 验 报 告 题目:结构体实验报告:XXXXX 学号:XXXXXXXXXXXX 班级:XXXXXXXXXXXXXXXX 专业:XXXXXXXXX 成绩:

一、实验目的 掌握结构类型的定义和使用,学会使用结构数组编程解决问题。 二、实验容、要求与安排方式 1、实验容: 编程解决如下问题:谁的年龄最小、奖学金统计、猴子选大王、选票统计(二)、数星星(二),任选四道题,其中选票统计(二)、数星星(二)必选。 2、要求:能够上机编辑、调试程序并通过OJ测试。 3、实验安排方式:每组1人,独立完成上机实验; 4、注意事项:结构的嵌套定义和引用方法、用指针访问结构。 三、代码及调试结果 1.数星星代码: #include #include #include typedef struct shiquan { int x; int y; } S; //定义结构体 int main() { S s[216]; int n,i,j; int sum=0; scanf("%d",&n); for(i=0; i

图1 数星星调试结果 2.奖学金代码: #include #include typedef struct student { char name[20]; int Last_Score; int Class_Score; char Stu_leader; char w_stu; int article; int sum; } STU; int main() { int n; STU p[11]; int flag=0; int sum=0; int max=0; scanf("%d",&n); int i; for(i=0; i

第10章 结构体及共用体

第10章结构体与共用体 考核知识点 ●结构体与共用体类型数据的定义方法和引用方法 ●用指针和结构体构成链表,单向链表的建立、输出、插入与删除 重要考点 ●对结构体的声明及定义 ●访问结构体的成员的方法 ●熟悉对链表的操作 10.1 用typedef说明一种新类型名 C语言规定可以用typedef说明一种新的类型名,说明新类型名的语句一般形式为:typedef 类型名称标识符; 其中,“类型名”一定是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用来标识新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并没有产生新的数据类型,因此,原有的类型名依然有效。 提示: 声明一个新的类型名的具体步骤如下: ⑴先按定义变量的方法写出定义的主体(如float a;). ⑵将变量名换成新类型名(如将a换成FLO)。 ⑶在最左面加上关键字typedef(如typedef FLO). ⑷然后可以用新类型名去定义其他的变量(如FLO b;). 10.2 结构体类型 在实际工作中,当我们需要把一些不同类型,但相互之间又存在着联系的信息组合应用时,就要用到结构体。结构体是一种看似复杂却非常灵活的构造数据类型。在通常情况下,一个结构体类型由若干个称为成员(或称为域)的部分组成。不同的结构体类型可根据需要由不同的成员组成。但对于某个具体的结构体类型,其成员的数量必须固定,这一点与数组相同;但结构体中各个成员的类型可以不同,这是结构体与数组的重要区别。例如,我们常用的“时间”可以由以下3个部分描述:小时(hour)、分(minute)、秒(second)。它们都可以用整型数表示,可以把这3个成员组成一个整体,并给它取名为time,这就是一个简单的结构体。 声明一个结构体类型的一般形式为: struct 结构体名 {成员表列}; struct是C语言中的关键字,是结构体类型的标志。“结构体名”用做结构体类型的标志,它又称“结构体标记”(structure)。大括号内是该结构体中各成员,成员表列是由若干个变量类型名及变量名组成的。这些成员共同组成一个结构体。例如,上面提到的“时间”结构体类型可以说明如下: struct time { int hour; int minute; int second;

结构体和共用体习题

习题六 1. 从下列四个选项中选择一个正确的填入括号中。 (1)在说明一个结构体变量时系统分配给它的存储空间是(D)。 A该结构体中第一个成员所需存储空间 B该结构体中最后一个成员所需存储空间 C该结构体中占用最大存储空间的成员所需存储空间 D该结构体中所有成员所需存储空间的总和 (2)在说明一个共用体变量时系统分配给它的存储空间是(D )。 A该共用体中第一个成员所需存储空间 B该共用体中最后一个成员所需存储空间 C该共用体中占用最大存储空间的成员所需存储空间 D该共用体中所有成员所需存储空间的总和 (3)共用体类型在任何给定时刻, (B)。 A所有成员一直驻留在内存中 B只有一个成员驻留在内存中 C部分成员驻留在内存中 D没有成员驻留在内存中 (4)以下定义结构体类型的变量st1,其中不正确的是(A ) A typedef stuct student { int num; int age; }STD; STD st1; B struct student { int num,age; }st1; C struct { int num; float age; }st1; D struct student { int num; int age; }; struct student st1; (5)已知职工记录描述为: struct workers {

int no; char name[20]; char sex; struct { int day; int month; int year; }birth; }; struct workers w; 设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。 A day=25; month=10; year=1993; B w.day=25w.month=10; w.year=1993; C w.birth.day=25; w.birth.month=10; w.birth.year=1993; D birth.day=25; birth.month=10; birth.year=1993; (6)设有如下定义: struct sk { int a; float b; }data,*p; 若有p=&data;则对data中的a成员的正确引用是(B)。 A (*p).data.a B (*p).a C p->data.a D p.data.a 2.填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c 、w[k-1].d 。 struct aa { int b; char c; double d; }; struct aa w[10]; int k=3; (2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b-> 和p.b. 。 struct st { int a; struct st *b; }*p, x;

C语言结构体习题及答案

第9章结构体 1.定义以下结构体类型 struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(struct s))的输出结果为【】。 A) 3 B) 7 C) 6 D) 4 # 2.当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和 3.定义以下结构体类型 struct s { int x; float f; }a[3]; < 语句printf("%d",sizeof(a))的输出结果为【】 A) 4 B) 12 C) 18 D) 6 7.定义以下结构体类型 struct student { char name[10]; int score[50]; float average; }stud1; 则stud1占用内存的字节数是【】。 ( A) 64 B) 114 C) 228 D) 7 9、设有一结构体类型变量定义如下: struct date { int year; int month; int day; }; struct worklist { char name[20]; char sex; $

struct date birthday; } person; 若对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。。。。 A. year=1976 B. =1976 C. D. =1976 1、若程序中有以下的说明和定义: struct abc { int x;char y; } 花括号后少了分号。 struct abc s1,s2; 则会发生的情况是______。 A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

第10章 结构体、共用体、枚举类

1 声明一个结构体类型的一般形式为: struct 结构体名 {成员表列}; 如:struct student { int num;char name[20];char sex; int age;float score;char addr[30]; }; 2 定义结构体类型变量的方法 (1)先声明结构体类型再定义变量名 例如:struct student student1, student2; | | | 结构体类型名结构体变量名 (2)在声明类型的同时定义变量 这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列; (3)直接定义结构体类型变量 其一般形式为: struct { 成员表列 }变量名表列; 即不出现结构体名。 注意: 成员名可以与程序中的变量名相同,二者不代表同一对象。 3 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。 例如: scanf(″%d″,&student1.num); (输入student1.num的值) printf(″%o″,&student1); (输出student1的首地址) 4 结构体数组的初始化 struct student {int num;char name[20]; char sex; int age; float score; char addr[30]; }stu[2]={{10101,″LiLin″,′M′,18,87.5,″103 BeijingRoad″},{10102,″Zhang Fun″,′M′,19,99,″130 Shanghai Road″}};

5 指向结构体变量的指针 #include #include void main() {struct student{long num;char name[20]; char sex; float score;}; struct student stu_1; struct student* p; p=&stu_1; stu_1.num=89101;strcpy(stu_https://www.360docs.net/doc/845435907.html,,”LiLin”); stu_1.sex=‘M’;stu_1.score=89.5; printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,stu-1.num,https://www.360docs.net/doc/845435907.html,,stu-1.sex,stu-1.score); printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,(*p).num,(*p).name,(*p).sex,(*p).score); } 6 以下3种形式等价: 结构体变量.成员名 (*p).成员名 p->成员名 7 用指针处理链表 (1)malloc函数 (2) calloc函数 (3) free函数 其函数原型为void free(void *p); 7.1 typedef struct { int n; struct { int y,m,d; }date; }PERSON; 下面定义结构体数组并赋初值 PERSON x[2]={1,04,10,1,2,04,12,30}; PERSON x[2]={{1,04,10,1},{2,04,12,30}}; PERSON x[2]={1,{04,10,1},2,{04,12,30}}; 7.2 struct person { int id;

第十一章结构体与共用体

第^一章结构体与共用体教学内容 (1) 结构体的定义与结构体变量; (2) 结构体数组; (3) 结构体指针; ⑷链表; (5) 共用体; (6) 枚举类型; 基本要求 掌握结构体的定义方法及其作用;重点掌握链表及其应用了解共用体的概念及其应用

一、概述 、引入原由 我们前面讲过数组,数组类型中的各个元素的类型是相同的,在日常应用中,仅仅有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。例如:学生的信息(姓名、性别、年龄、成绩、学号)。那么如何实现这种结构呢?采用的是结构体。 女口:struct student { int num; char n ame[20]; char sex; int age; float score; }; 、结构体类型的一般形式 struct 结构体名 {成员表列}; 成员表列:类型名成员名 女口:struct student {int nu m;char sex;}; 二、结构体类型变量的定义、引用、初始化 、定义方法 1、先声明类型再定义变量名 struct stude nt {int nu m;char sex;}; struct stude nt stu1,stu2; 2、在声明类型的同时定义变量 struct stude nt {int nu m;char sex;} stu1,stu2; 3、直接定义结构体类型变量(不给出结构体名) struct {int nu m;char sex;} stu1,stu2; 4、说明: 1 )类型与变量不同(变量:分配空间,可以赋值、存储、运算) 2)成员与普通变量地位相当,域名可以单独使用 3)成员也可以是一个结构体变量 如: struct date

结构体与联合体习题含答案

2013年结构体与联合体习题 选择题 1、若程序中有以下的说明和定义: struct abc { int x;char y; } 花括号后少了分号。 struct abc s1,s2; 则会发生的情况是______。 A) 编译时错B) 程序将顺序编译、连接、执行 C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连 接出错 2、有以下程序段 struct st { int x; int *y;}*pt; int a[]={1,2};b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; 以下选项中表达式的值为11的是 A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x 3、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是______。 A) (p++)->num B) p->num C) (*p).num D) stu[3].age 4、设有如下枚举类型定义 enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran}; 枚举量Fortran的值为______。 A) 4 B) 7 C) 102 D) 103 5、以下叙述中错误的是_________。 A)可以通过typedef增加新的类型 B)可以用typedef将已存在的类型用一个新的名字来代表 C)用typedef定义新的类型名后,原有类型名仍有效 D)用typedef可以为各种类型起别名,但不能为变量起别名 6、有以下程序段 typedef struct NODE

第十一章结构体的试题

(1)()是关于C语言数据类型的正确叙述。 A) 枚举类型不是基本类型 B) 变量使用前应定义相应的数据类型 C) 不允许使用空类型 D) 数组不是构造类型 (2) 下列()对结构类型变量定义是错误的。 A) struct teacher { int num; int age; }; struct teacher teach1; B) struct { int num; int age; } teach1, teach2; C) struct { int num; int age; } teacher; struct teacher teach1; D) struct teacher { int num; int age; } teach1; (3) 若有定义: char ch; int j,k; enum day {sun, mon, tue, wed, thu, fri, sat}; int a[sat]; 则()对下列语句是否符合语法规则的判断是正确的。 sun=0; /*语句1*/ j=mon+tue; /*语句2*/ if (a[mon]>0) j++; /*语句3*/ A) 语句1、2、3均正确 B) 语句2正确,语句1和语句3错误 C) 语句1错误,语句2和语句3正确 D) 语句1、2、3均错误 (4) 若有定义: struct teacher { int num; char sex;

int age; } teacher1; 则下面叙述错误的是()。 A) teacher1是结构类型名 B) struct teacher是用户定义的结构类型 C) num、sex、age都是结构变量teacher1的成员 D) struct是结构类型的关键字 (5) 下列程序段运行后,表达式()的值为3。 struct point { int x; int y; } *p; struct point a[3]={1,2,3,4,5,6}; p=a; A) p[1].x B) *(p+2) C) p[3].x D) p[2].x (6) 若有定义: typedef int NUM[100]; NUM n; 则()语句是正确的。 A) n[0]=2; B) NUM=2; C) NUM=n; D) n=2; (7) 若有定义int a=1,b=2,t=3; struct data { char a; float b[3]; long c; }d1; 则变量d1的长度是()。 A) 4 B) 17 C) 12 D) 15 (8) 若有定义 struct teacher { int num;

电子技术 第十章 结构体与共用体

第十章结构体与共用体 一、选择题 1.在说明一个结构体变量时系统分配给它的存储空间是。(0级) A)该结构体中第一个成员所需存储空间 B)该结构体中最后一个成员所需存储空间 C)该结构体中占用最大存储空间的成员所需存储空间 D)该结构体中所有成员所需存储空间的总和 2.若有以下说明和语句: struct worker {int no; char ﹡name;}work, ﹡p=&work; 则以下引用方式不正确的是。(1级) A) work.no B) (﹡p).noC) p->no D)work->no3.有如下定 义: struct date { int year,month,day; }; structworklist {char name[20]; char sex; struct datebirthday; }person; 对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。 (1级) A) year=1958B) birthday.year=1958 C) person.birthday.year=1958 D) person.year=19 58 4.以下对结构体类型变量的定义中不正确的是。(1级) A)#define STUDENT struct studentB) struct student STUDENT{ int num; { intnum;floatage; floatage; }std1; }std1; C)struct D) struct {intnum;{ intnum; float age;float age; } student; }std1;structstudent std1; 5.设有以下说明语句 struct stu { int a; float b;}stutype; 则下面的叙述不正确的是。(1级) A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名

练习题-第十章 结构体与共用体(有答案)

一、填空题 1.若有如下结构体定义: struct student { int num; float age; char sex; }stud; 则stud所占的内存空间是9 字节。 2.已有定义和语句: union data { int i; char c; float f; }a,*p; p=a; 则对a中成员c的正确访问形式可以是 a.c 或: p->c或:(*p).c。(只需 写出一种) 二、单项选择题: 1.若有下列定义: struct b { float a[5]; double c; int d;}x; 则变量x在内存中所占的字节为下列哪一个:( C ) A.6 B. 10 C. 30 D. 14 2.设有以下说明语句,则下面的叙述不正确的是( C ) struct stu { int a; float b; } stutype; A. struct 是结构体类型的关键字。 B. struct stu 是用户定义的结构体类型。 C. stutype是用户定义的结构体类型名。 D. a和b都是结构体成员名。 3.下面程序的运行结果是( ) #include main( ) { struct date { int year, month, day;

}today; printf(“%d\n”,sizeof(struct date)); } A. 6 B. 8 C. 10 D. 12 4.设有以下说明语句,则下面的叙述正确的是( B ) typedef struct { int a; float b; } stutype; A. stutype是结构体变量名。 B. stutype 是结构体类型名。 C. struct是结构体类型名。 D. typedef struct是结构体类型名。 三、填程序 1.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请填 空。 static struct man { char name[20]; int age; }person[ ]={{“LiMing”,18},{“WangHua”,19},{“ZhangPing”,20}}; main( ) { struct man *p,*q; int old=0; p=person; for(; p age){ q=p; old=p->age ;} printf(“%s %d”, q->name,q->age ); }

c语言结构体与共用体之间的区别

https://www.360docs.net/doc/845435907.html,/2005/03/25/12365.html 所谓共用体类型是指将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。其定义形式为: union 共用体名 {成员表列}; 7.5.1 共用体的定义 union data { int a ; float b ; d o u b l e c ; c h a r d ; } obj; 该形式定义了一个共用体数据类型union data ,定义了共用体数据类型变量o b j。共用体 数据类型与结构体在形式上非常相似,但其表示的含义及存储是完全不同的。先让我们看一个小例子。 [例7 - 8 ] union data /*共用体* / { int a; float b; double c; char d; } m m ; struct stud /*结构体* / { int a; float b; double c; char d; } ; m a i n ( ) { struct stud student printf("%d,%d",sizeof(struct stud),sizeof(union data)); } 程序的输出说明结构体类型所占的内存空间为其各成员所占存储空间之和。而形同结构体的

共用体类型实际占用存储空间为其最长的成员所占的存储空间。详细说明如图7 - 6所示。 对共用体的成员的引用与结构体成员的引用相同。但由于共用体各成员共用同一段内存 空间,使用时,根据需要使用其中的某一个成员。从图中特别说明了共用体的特点,方便程序设计人员在同一内存区对不同数据类型的交替使用,增加灵活性,节省内存。 7.5.2 共用体变量的引用 可以引用共用体变量的成员,其用法与结构体完全相同。若定义共用体类型为: union data /*共用体* / { int a; float b; double c; char d; } m m ; 其成员引用为:m m . a , m m . b , m m . c , m m . d 但是要注意的是,不能同时引用四个成员,在某一时刻,只能使用其中之一的成员。 [例7-9] 对共用体变量的使用。 m a i n ( ) { union data { int a; float b; double c; char d; } m m ; m m . a = 6 ; printf("%d\n",mm.a); m m . c = 6 7 . 2 ; p r i n t f ( " % 5 . 1 l f \ n " , m m . c ) ; m m . d = ' W ' ; m m . b = 3 4 . 2 ; p r i n t f ( " % 5 . 1 f , % c \ n " , m m . b , m m . d ) ; }

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体

附源程序清单: 1. #include struct student { int num; char name[20]; char classname[20]; float score[3]; float aver_score; }stu[5]; void input() { int i; for(i=1;i<6;i++) { printf("第%d个同学",i); printf("请输入学号名字班级三门课程成绩:\n"); scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]); } }; void averagescore() {

for(i=1;i<=5;i++) stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3); printf("平均成绩:"); for(i=1;i<6;i++) printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score); printf("\n"); }; void max() { int i,k=0; float temp=stu[1].aver_score; for(i=2;i<=5;i++) if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;}; printf("成绩最好的同学:\n"); printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n", stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score); }; void main() { input(); averagescore(); max(); } 2.#include struct worker { char name[20]; int workyear; float salary; }work[5]; void input() { int i; for(i=1;i<=5;i++) { printf("第%d个工人:",i); printf("请输入名字工作年限工资总额:\n"); scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);

十一章 结构体与共用体

结构体与共用体 一、选择题: 1.已知赋值语句wang.year=2004;则wang的变量类型是() A. 字符或文件 B. 整型或实型 C. 共用或结构 D. 实型或指针 2.Turbo C中,以下类型数据在存储器中占的字节数为 ( ) struct test { int x; float y; char z; } ; A. 2 B. 3 C. 6 D. 7 3.以下语句中,成员data的正确引用方式为( ) struct node { int data; char name[10]; }stree; struct node *p=&stree; A. p.data B. p->data C. (*p)->data D. stree->data 4、当执行以下程序段时,输出的结果是。()struct data { char a; int b; float c; }; printf(“%d”, sizeof(struct data)); A. 1 B. 2 C. 4 D. 7 5.下面程序段的运行结果是。 struct stu { int num; char name[10]; float scrose ; }; printf(“%d\n”, sizeof (struct stu )); (A)14 (B)12 (C)16 (D)3 6. 若有定义: typedef char* string; #define str char * int a=4; struct { int x, *y; }z={10, &a}, *p=&z; 则下列不等价的是: A. string name, sign; 与 str name, sign; B. *p->y++ 与 *(p->y++) C. ++*p->y 与 ++(*p->y) D. ++p->x与++(p->x) ()

相关文档
最新文档