第十章结构体与共用体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.结构体变量(填:“可以”或“不可以”)直接做函数的参数,共用体变量
(填:“可以”或“不可以”)直接做函数的参数。