9 结构体与共用体
- 格式:pdf
- 大小:122.26 KB
- 文档页数:7
第9章结构体与共用体一、单项选择题1. 若有以下说明语句:struct student{ int num;char name[ ];float score;}stu;则下面的叙述不正确的是: ( )A) struct是结构体类型的关键字B) struct student 是用户定义的结构体类型C) num, score都是结构体成员名D) stu是用户定义的结构体类型名2. 若有以下说明语句:struct date{ int year;int month;int day;}brithday;则下面的叙述不正确的是_____.A) struct是声明结构体类型时用的关键字B) struct date 是用户定义的结构体类型名C) brithday是用户定义的结构体类型名D) year,day 都是结构体成员名3. 已知:(设整型2字节,字符型1字节,浮点型4字节)struct{ int i;char c;float a;}test;则sizeof(test)的值是。
A) 4 B) 5 C) 6 D) 74. 以下对结构变量stul中成员age的非法引用是。
struct student{ int age;int num;}stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age5. 有如下定义struct person{char name[9]; int age;};struct person class[10]={“Tom”,17,“John”,19,“Susan”,18,“Adam”,16,};根据上述定义,能输出字母A的语句是A) printf(“%c\n”,class[3].name); B) printf(“%c\n”,class[3].name[0]);C) print f(“%c\n”,class[3].name[1]); D) printf(“%c\n”,class[2].name[3]);6. 存放100个学生的数据、包括学号、姓名、成绩。
c语言9结构体与共用体九、结构体与共用体(一) 选择题1、C语言结构体类型变量在程序执行期间_________。
A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中2、下面程序的运行结果是_________。
main(){struct cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}A.0 B.1 C.3 D.63、设有如下定义:struct sk{int n;float x;}data ,*p;若要使p指向data中的n域,正确的赋值语句是_________。
A.p=&data.nB.*p=data.n;C.p=(struct sk *)&data.nD.p=(struct sk *)data.n4、以下对结构体变量stu1中成员age的非法引用是_________。
struct student{int age;int num;}stu1,*p;p=&stu1A.stu1.ageB.student.ageC.p->ageD.(*p).age5、下面对typedef的叙述中不正确的是_________。
A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植6、以下scanf函数调用语句中对结构体变量成员的不正确引用是_________。
struct pupil{char name[20];int age;int sex;}pup[5],*p;p=pup;A.scanf("%s",pup[0].name);B.scanf("%d",&pup[0].age);C.scanf("%d",&(p->sex));D.scanf("%d",p->age);7、若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是_________。
第九讲结构体和共用体9.1 概述迄今为止,我们已经介绍了基本类型(或称简单类型)的变量(如整型、实型、字符型变量等),也介绍了一种构造类型数据——数组,数组中的各元素是属于同一个类型的。
但是只有这些数据型是不够的。
有时需要将不同类型的数据组合成一个有机的整体,以便于引用。
这些组合在一个整体中的数据是互相联系的。
例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项。
这些项都与某一学生相联系,如图。
应当把它们组织成一个组合项,在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。
C语言提供了这样一种数据结构,它称为结构体(structure)。
它相当于其它高级语言中的“记录”。
定义的类型如下:struct student{int num;char name[20];char sex;int age;float score;char addr[30];};上面定义了一个结构体类型,struct student(struct是关键字,不能省略),表示这是一个“结构体类型”。
它包括num,name,age,score,addr 等不同类型的数据项。
应当注意:struct student是程序设计者自己定义的类型名。
它和系统已定义了的标准类型(如int、char、float、double 等)一样可以用来作为定义变量的类型。
定义一个结构体类型的一般形式为:struct 结构体名{成员表列};花括弧内是该结构体中的各个成员(或称分量),由它们组成一个结构体。
例如,上例中的num,name,sex等都是成员。
对各成员都应进行类型说明,即类型标识符成员名也可以把“成员表列”称为“域表”。
每一个成员称为结构体中的一个域。
成员名命名规则与变量名命名规则相同。
“结构体”这个词是根据英文单词structure译出的。
许多C语言书把structure直译为“结构”。
9.2 结构体的定义、引用和初始化一、定义结构体类型变量的方法1、先定义结构体类型再定义变量名如:struct student{int num;char name[20];char sex;int age;float score;char addr[30];};struct student student1,student2;//表示定义两个struct student 类型的变量student1和student2.2、在定义类型的同时定义变量例如:struct student{ int num;char name[2];char sex;int age;float score;char addr[30];} student1,student2;它的作用与前面定义的相同。