第十章结构体与共用体

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

试题汇编之:结构体与共用体

一.选择题

1.共用体定义为“union data{char ch;int x;}a;”下列语句正确的是。

A:a.ch=‟x‟;a=10; B:a a=‟x‟,10;

C:a.x=10;a.ch=‟x‟; D:a=‟x‟;

2.共用体定义为“union data{char ch;int x;}a;”下列语句不正确的是。

A:a={…x‟,10}; B:a.x=10;a.x++;

C:a.ch=‟x‟;a.ch++; D:a.x=10;a.ch=‟x‟;

3.对于:struct node{double x;char c;}*p;下列哪个赋值是错的。

A:p->x=2B:p.x=2.0 C.p->c=2 D.(*p).c=‟a‟

4.对于以下结构定义:struct{int len;char *str;}*p;(*p)->str++中的++加在。

A:指针str上B:指针p上. C.str所指的内容上 D:表达式语法有错

5.对如下定义:struct{char a1;int a2;}xx; union{char a1;int a2;int a3;}yy;

如果sizeof(xx)的值为3,则sizeof(yy)的值应为:

A:2 B:4 C:5 D:定义有错

6.以下结构体变量定义语句中错误的是。

A.struct staffer{ long int code; float salary;} one;

B.struct staffer{ long int code; float salary;} staffer one;

C.typedef struct { long int code ; float salary;} STAFFER;

D.struct { long int code; float salary; }one;-

7.形如上题中定义的结构体变量,下列对此变量的输入形式中正确的是。

A: scanf(“%ld%f”,one); B: scanf(“%ld%f”,&one);

C: scanf(“%ld%f”,one.code,one.salary); D: scanf(“%ld%f”,&one.code,&one.salary);

8.有如下结构体类型的定义则。

(1)struct mm{ int x,y; struct mm bl;} (2)struct mm{int x,y; struct mm* p;}

A: (1)正确,(2)不正确。B: (1)(2)都正确。C: (1)不正确(2)正确D: (1)(2)都不正确

9.某结构体变量定义如下,对此结构体变量中的元素引用,形式正确的是。

struct a{ int a;char c;} bl,*p; p=&bl;

A: bl->a B: (*p).c C: p.c D: *p.a

10.下面定义中,对成员变量x的引用形式中正确的是。

struct mm{int x,y;}; struct aa{char c; struct mm zb;} bl;

A: bl.zb.x B: bl.x C: bl.mm.x D: zb.x

11.下列定义及注释错误的是。

A: typedef int NUM[100]; NUM n[50]; /*定义二维数组n[100][5]。*/

B: typedef char CC; CC c,*p=&c; /*定义指针指向字符型变量。*/

C: typedef char CC; char c; CC p=&c;

D: typedef int (*POINT)(); POINT p1,p2; /*定义指向函数的指针*/

12.下列说法中错误的是。

A:枚举类型中的枚举元素是常量。

B:枚举类型中枚举元素的值都是从0开始以1为步长递增。

C:一个整数不能直接赋给一个枚举变量。

D:typedef可以用来定义新的数据类型。

13.下列说法中错误的是。

A:对链表中的表项只能顺序访问,不能随机访问。

B:环形链表可以不需要头指针。

C:链表各个表项的数据域的类型或以不同。

D:较之数组,链表的优点是插入或删除数据不需要进行大量的数据移动。

14.有如下程序段,则说法中正确的是。

enum week{Mon,Tue,Wed,Thu,Fri,Sat,Sun};

enum week bl1;

scanf(“%d”,&bl1);

if(bl1==Sat||bl1==Sun) printf(“It is a holiday! (%d)\n”,bl1);

A:此程序段的scanf语句不正确。

B:此程序段的if语句不正确。

C:此程序段正确,当输入为5时,输出为It is a holiday! (Sat)。

D:此程序段正确,当输入为5时,输出为It is a holiday!(5)。

15.有如下程序段,则选项中说法正确的是。

enum item{ a=f-3,b,c=7,d,e=3*a,f} bl;

bl=f;

printf(“%d”,bl);

A:输出结果为:4。B:此程序段在编译时将报错。

C:此程序能通过编译,但运行结果不确定。D:输出结果为:1。

二、填空题

1.自动类型的结构体变量(填:“可以”或“不可以”)在定义时赋初值,同

类型的共用体变量(填:“可以”或“不可以”)在定义时赋初值。

2.结构体变量(填:“可以”或“不可以”)直接做函数的参数,共用体变量

(填:“可以”或“不可以”)直接做函数的参数。

相关文档
最新文档