当前位置:文档之家› 第9章 结构体(练习题OK)

第9章 结构体(练习题OK)

第9章 结构体(练习题OK)
第9章 结构体(练习题OK)

第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) 7

4. 以下对结构变量stul中成员age的非法引用是。

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A) stu1.age B) student.age C) p->age D) (*p).age

5. 有如下定义

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) printf(“%c\n”,class[3].name[1]); D) printf(“%c\n”,class[2].name[3]);

6. 存放100个学生的数据、包括学号、姓名、成绩。在如下的定义中,不正确的是( )。

A.struct student

{int sno;

char name[20];

float score;

} stu[100];

B. struct student stu[100]

{int sno;

char name[20];

float score};

C. struct

{ int sno;

char name[20];

float score;} stu[100];

D. struct student

{int sno;

char name[20];

float score;};

struct student stu[100];

7. 设有定义语句“struct {int x; int y;} d[2]={{1,3},{2,7}};”

则“printf(“%d\n”,d[0].y/d[0].x*d[1].x);”输出的是( )。

A.0 B)1 C)3 D)6

8. 设有如下定义,则对data中的a成员的正确引用是( )。

struct sk{ int a; float b;} data,*p=&data;

A)(*p))data.a B)(*p).a C)p->data.a D)p.data.a

9、已知:struct sk

{ int a;

float b;

}data, *p;

若有p=&data,则对data中的成员a的正确引用是()。

A、(*p).data.a

B、p->data.a

C、(*p).a

D、p.data.a

10. 设有如下定义:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是

A) p=&a; B) p=data.a; C) p=&data.a;D)*p=data.a;

11. 以下对结构变量stu1中成员age的非法引用是( )。

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A、stu1.age

B、student.age

C、p->age

D、(*p).age

12、设有以下说明语句:

typedef struct stu

{ int a;

float b;

} stutype;

则下面叙述中错误的是()。

A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

二、阅读程序,写出运行结果

1.

#include

struct st

{ int x;

int y;

} a[2]={5, 7, 2, 9} ;

main()

{

printf("%d\n",a[0].y*a [1].x);

}

运行结果是:

14

2.

#include

main( )

{struct stu

{int no;

char a[5];

float score;

}m={1234,”wang”,89.5};

printf(“%d,%s,%f”,m.n o,m.a,m.score);

}

运行结果是:

1234,wang,89.500000

3.

#include

struct cmplx

{ int x;

int y;

}cnum[2]={1, 3, 2, 7};

main( )

{

printf(“%d\n”, cnum[0].y * cnum[1].x ); }

运行结果是:

6

4.

#include

struct abc

{ int a, b, c; };

main()

{ struct abc s[2]={{1,2,3},{4,5,6}};

int t;

t=s[0].a+s[1].b;

printf("%d \n",t);

}

运行结果是:

6

5.

#include

struct point

{ int x; int y;

} pt[]={1,4,6, 8,3,5};

main()

{ struct point *p;

p=pt;

printf(“%d”,p->y *(p+1)->x);

}

运行结果是:

24

6.

#include

struct student

{ int num;

char name[10];

float score;

}stu[3]={{1,"wang",84},{2,"Li",86.5},{3,"Zhang",90}}; main()

{ int i;

float total=0.0;

for(i=0;i<3;i++)

total=total+stu[i].score;

printf("The total scores is:%f",total);

}

运行结果是:

The total scores is:260.5

第11章 结构体与共用体

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

数据结构习题及答案-第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 一、

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) 能顺序通过编译、但连接出错

第十一章结构体的试题

(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) 结构体的定义与结构体变量; (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

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

一、填空题 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 ); }

十一章 结构体与共用体

结构体与共用体 一、选择题: 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) ()

11第十一章结构体和联合体练习

第十一章结构体和共用体 一、单项选择题: 1、在说明一个结构体变量时系统分配给它的存储空间是()。 A、该结构体第一个成员所需存储空间 B、该结构中最后一个成员所需存储空间 C、该结构体中占用最大存储空间的成员所需存储空间 D、结构体中所有成员所需存储空间的总和 2、在说明一个共用体变量时系统分配给它的存储空间是()。 A、该共用体中第一个成员所需存储空间 B、该共用中最后一个成员所需存储空间 C、该共用体中占用最大存储空间的成员所需存储空间 D、共用体中所有成员所需存储空间的总和 3、共用体类型在任何给定时刻,()。 A、所有成员一直驻留在结构中 B、只有一个成员驻留在结构中 C、部分成员驻留在结构中 D、没有成员驻留在结构中 4、使用共用体union的目的是()。 A、将一组数据作为一个整体,以便于其中 的成员共享同一存储空间 B、将一组具有相同数据类型的数据作为一 个整体,以便于其中的成员共享同一存 储空间 C、将一组相关数据作为一个整体,以便程 序中使用 D、将一组具有相同数据类型的数据作为 一个整体,以便程序中使用 5、以下typedef的叙述不正确的是()。 A、用typedef可以定义各种类型名,但不 能用来定义变量 B、用typedef可以增加新类型 C、用typedef只是将已存在的类型用一个 新的名称来代表 D、使用typedef便于程序的通用 6、以下关于枚举的叙述不正确的是()。 A、枚举变量只能取对应枚举类型的枚举 元素表中元素 B、可以在定义枚举类型时对枚举元素进行 初始化C、枚举元素表中的元素有先后次序,可以 进行比较 D、枚举元素的值可以是整数或字符串 7、在下列程序段中,枚举变量c1和c2的值分别是()和()。 main() { enum color {red,yellow,blue=4,green,white} c1,c2; c1=yellow; c2=white; printf(“%d,%d\n”,c1,c2); } A、1 B、3 C、5 D、6 8、若有以下说明和语句: struct worker { int no; char *name; }work,*p=&work; 则以下引用方式不正确的是()。 A、work.no B、(*p).no C、p—>no D、work—>no 9、以下程序执行后的正确结果是()。struct tree { int x; char *s; }t; func(struct tree t) { t.x=10; t.s=”computer”; return(0); } main() { t.x=1; t.s=”minicomputer”; func(t); printf(“%d,%s\n”,t.x,t.s); } A、10,computer B、1,minicomputer C、1,computer D、10,minicomputer

第11章 结构

第11 章结构与联合 一、单选题 1 下列关于结构的说法错误的是: A:结构是由用户自定义的一种数据类型 B:结构中可设定若干个不同数据类型的成员 C:结构中成员的数据类型可以是另一个已定义的结构D:在定义结构时,可以为成员设置默认值 答案:D 2 以下关于结构体的叙述中,错误的是: A:结构体是一种可由用户构造的数据类型 B:结构体中的成员可以具有不同的数据类型 C:结构体中的成员不可以与结构体变量同名 D:结构体中的成员可以是指向自身结构的指针类型 答案:C 3 以下结构体类型说明和变量定义中,正确的是:A:struct SS { char flag; float x; } struct SS a,b; B:struct { char flag; float x; }SS; SS a,b; C:struct ss { char flag; float x; }; D:typedef { char flag; float x; }SS; SS a,b; 答案:C 4 以下对结构体类型变量st的定义中,不正确的是:A:struct { char c; int a; }st; B:struct { char c; int a; }TT;

struct TT st; C:typedef struct { char c; int a; }TT; TT st D:#define TT struct TT { char c; int a; }st; 答案:B 5 设有以下说明语句: struct stu { int a; float b; }stutype; 则下面的叙述不正确的是: A:struct是结构体类型的关键字 B:struct stu是用户定义的结构体类型名 C:stutype是用户定义的结构体类型名 D:a和b都是结构体成员名 答案:C 6 在16位IBM-PC机上使用C语言时,若有如下定义:struct data { int i; char ch; double f; }b; 则结构变量b占用内存的字节数是: A:1 B:2 C:8 D: 11 答案:D 7 以下程序的运行结果是: #include "stdio.h" main( ) { struct date { int year; int month; int day: }today; printf("%d\n",sizeof(struct date) );

第11章 结构体

单项选择题 1101. 当说明一个结构体变量时系统分配给它的内存是( )。 A. 各成员所需内存量的总和 B. 结构中第一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 结构中最后一个成员所需内存量 1002. 设有以下说明语句 struct uu { int n; char ch[8]; } PER; 则下面叙述中正确的是( )。 A. uu 是结构体标识名 B. PER 是结构体标识名 C. struct uu是结构体标识名 D. struct 是结构体标识名 1003. 已知有如下定义: struct a{char x; double y;}data,*t; 若有t=&data,则对data中的成员的正确引用是( )。 A. (*t).x B. (*t).data.x C. t->data.x D. t.data.x 1004. 设有如下定义: struct sk { int a; float b; } data; int *p; 若要使P指向data中的b域,正确的赋值语句是( )。 A. p=&data.b; B. p=&b; C. p=data.b; D. *p=data.b; 1005. 已知学生记录描述为: struct student { int no; char name[20],sex; struct { int year,month,day;

} birth; }; struct student s; 设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )。 A. s.birth.year=1984;s.birth.month=11;s.birth.day=12; B. birth.year=1984;birth.month=11;birth.day=12; C. s.year=1984;s.month=11;s.day=12; D. year=1984;month=11;day=12; 1006. 有如下定义 struct person{char name[9];int age;}; struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,}; 根据上述定义,能输出字母M的语句是( )。 A. printf("%c\n",class[3].name[1]); B. printf("%c\n",class[3].name); C. printf("%c\n",class[2].name[1]); D. printf("%c\n",class[2].name[0]); 1007. 若程序中有以下的说明和定义: struct abc { int x;char y; } struct abc s1,s2; 则会发生的情况是( )。 A. 编译出错 B. 程序将顺序编译、连接、执行 C. 能顺序通过编译、连接、但不能执行 D. 能顺序通过编译、但连接出错 1008. 有以下程序段 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->x B. *pt->y C. pt->x D. (pt++)->x 1009. 有以下说明和定义语句 struct student { int age; char num[8];};

C程第十一章结构体上机习题

第十一章结构体与共用体 问题与思考 1.下面程序的运行结果是___________. 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)6 2.以下对结构体变量stu1中成员age的非法引用是____b____. struct student {int age; int num; }stu1,*p; p=&stu1; a) b) c)p->age d)(*p).age 3.以下scanf函数调用语句中对结构体变量成员的不正确引用是_____d___. 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); 4.以下程序的运行结果是___10,x_____. struct n{ int x; char c; }; main() {struct n a={10,'x'}; func(a); printf("%d,%c",,;

} func(struct n b) { =20; ='y'; } 5.若有定义: struct num {int a; int b; float f; }n={1,3,}; struct num *pn=&n; 则表达式pn->b/*++pn->b的值是___12_____,表达式(*pn).a+pn->f的值是. 6.以下程序的运行结果是____7,3____. struct ks {int a; int *b; }s[4],*p; main() { int n=1; printf("\n"); for(i=0;i<4;i++) { s[i].a=n; s[i].b=&s[i].a; n=n+2; } p=&s[0]; p++; printf("%d,%d\n",(++p)->a,(p++)->a); } 7.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请在_______内填入正确内容。 stati struct man{ char name[20]; int age; }person[]={"li=ming",18, "wang-hua",19, "zhang-ping",20

第十一章 结构体与共用体

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

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

第6章-结构体与共用体

一、判断题 1. 结构体的定义不为它分配具体的内存空间。 答案:T 2. C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。 答案:T 3. 一个共用体变量中可以同时存放其所有成员。 答案:F 4. 若有定义union dt{int a; char b; double c;}data;,变量data所占的内存字节数与成员c所占字节数相等。 答案:F 5. 用typedef可以增加新类型。 答案:F 6. 共用体类型数据中所有成员的首地址都是同一地址。 答案:T 7. 可以用已定义的共用体类型来定义数组或指针变量的类型。 答案:T 8. 共用体类型数据中的成员可以是结构体类型,但不可以是共用体类型。 答案:F 9. 可以对共用体变量直接赋值。 答案:F 二、选择题 1. 下面关于结构体概念的叙述中,正确的说法是()。 A. 相同类型数据的集合称为结构体 B. 不同类型数据的集合称为结构体 C. 数据的集合称为结构体 D. 整数的集合称为结构体 答案:C 2. 设有以下说明语句: struct abc { int m; float n; }stype; 则下面错误的叙述是()。

A. struct是定义结构体类型的关键字 B. stype是结构体类型名 C. m和n都是结构体成员名 D. stype是结构体变量名 答案:B 3. 以下对枚举类型ee的定义中,正确的定义是()。 A. enum ee {A, B, C, D}; B. enum ee {'A', 'B', 'C', 'D' }; C. enum ee = {A, B, C, D}; D. enum ee = {'A', 'B', 'C', 'D' }; 答案:A 4. 以下关于同类型结构体与同类型共用体赋值的叙述中,正确的说法是()。 A. 共用体变量之间可以直接赋值,结构体变量之间也可以直接赋值 B. 共用体变量之间可以直接赋值,结构体变量之间不可以直接赋值 C. 共用体变量之间不可以直接赋值,结构体变量之间可以直接赋值 D. 共用体变量之间不可以直接赋值,结构体变量之间也不可以直接赋值 答案:A 5. 设有如下定义: struct data { int i; union test { char ch; double q; }t; double f; }b; 若字符型变量占1个字节,整型变量占4个字节,双精度变量占8个字节,则结构体变量b占用内存的字节数是()。 A. 8 B. 9 C. 18 D. 20 答案:D 6. 以下关于数据类型int的别名定义中,正确的定义是()。 A. typedef int Integer; B. typedef int = Integer; C. typedef Integer int; D. typedef Integer = int;

数据结构11章习题

第十一章 一、单项选择题 1、对任意的七个关键字进行排序,至少要进行( )次关键字之间的两两比较。 A 、13 B 、14 C 、15 D 、16 E 、17 2、排序方法中,从未排序序列中依次取出元素与已排列序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( )。 A 希尔排序 B 冒泡排序 C 插入排序 D 选择排序 3、在文件“局部有序”或文件长度较小的情况下,最佳内排序方法是( )。 A 直接插入排序 B 冒泡排序 C 直接选择排序 D 归并排序 4、在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。 A 插入排序 B 选择排序 C 快速排序 D 归并排序 5、在下列算法中,( )算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。 A 堆排序 B 冒泡排序 C 插入排序 D 快速排序 6、对记录的关键字为{50,26,38,80,70,90,8,30,40,20}进行排序,各趟排序结束时的结果是: 50 26 38 80 70 90 8 30 40 20 50 8 30 40 20 90 26 38 80 70 26 8 30 40 20 80 50 38 90 70 8 20 26 30 38 40 50 70 80 90 其使用的排序方法是( )。 A 快速排序 B 基数排序 C 希尔排序 D 归并排序 7、对给出的一组关键字{14,5,19,20,11,19}。若按关键字非递减排序,第一趟排序结果是{14,5,19,20,11,19},问采用的排序方法是( )。 A 简单选择排序 B 快速排序 C 希尔排序 D 二路归并排序 8、在对n 各元素进行冒泡排序的过程中,最好情况下的时间复杂度为( )。 A 、O(1) B 、O (2log n ) C 、2()O n D 、 O(n) 9、一组记录的关键码为(46,79,56,38,40,84,),则利用快速排序的方法,以第一个记录为基准得到的依次划分结果为( )。 A 、38,40,46,56,79,84, B 、40,38,46,79,56,84 C 、40,38,46,56,79,84 D 、40,38,46,84,56,79 10、用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下: (1)25,84,21,47,15,27,68,35,20 (2)20,15,21,25,47,27,68,35,84

相关主题
文本预览
相关文档 最新文档