当前位置:首页 > 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
10、有如下定义: struct date {
int year,month,day; };
struct worklist {
char name[20]; char sex;
struct date birthday; }person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( )。 A、 year=1958 B、 birthday.year=1958 C、 person.birthday.year=1958 D、 person.year=1958
11、在如下结构体定义中,不正确的是( )。
A、struct student {
int no;
char name[10]; float score; }
B、struct stud[20] {
int no;
char name[10]; float score; }
C、struct student {
int no;
char name[10]; float score; }stud[20]; D、struct {
int no;
char name[10]; float score; }stud[100];
12、正确的k值是( )。 enum {a,b=5,c,d=4,e} k;
k=e;
A、3 B、4 C、5 D、6 13、正确的k值是( )。 enum {a,b=5,c,d=4,e} k; k=a;
A、0 B、1 C、4 D、6 14、以下程序的执行结果是( )。 main() {
union {
int x; struct {
char c1; char c2; }b; }a;
a.x=0x1234;
printf(“%x,%x\\n”,a.b.c1,a.b.c2); }
A、12,34 B、34,12 C、12,00 D、34,00
15、以下程序的执行结果是( )。 minin() {
union {
char s[2]; int i; }a;
a.i=0x1234;
printf(“%x,%x\\n”,a.s[0],a.s[1]); }
A、12,34 B、34,12 C、12,00 D、34,00
16、以下程序的功能是读入一行字符,且每个字符存入一个结点,按输入顺序建立一个链表的结点序列,然后再按相反顺序输出并释放全部结点,请选择正确的编号填空。 #include
*)malloc(sizeof(type))) #define NULL 0 main() {
struct node {
char info;
struct node (1) ; }*top, *p; char c;
top=NULL;
while ((c=getchar())!=’\\n’) {
p=getnode( (2) ); p—>info=c;
p—>link= (3) ; top= (4) ; }
while (top!=NULL) {
p= (5) ; top=p—>link;
printf(“%c”,p—>info); free(p); } }
(1)A、*p B、*link C、*top D、link (2) A、top B、p C、node D、struct node (3) A、top B、top—>link C、p D、p—>link (4) A、link B、p C、p—>link D、top—>link (5) A、p—>link B、top—>link C、top D、link 18、阅读以下程序,请选择正确的编号填空。 #include
char c[5]; char *s; }st; main() {
static st s1[2]={{“ABCD”,”EFGH”},
{“IJK”,”LMN”}};
static struct str2 {
st sr; int d;
}s2={“OPQ”,”RST”,32767}; st *p[ ]={&s1[0],&s1[1]};
printf(“%c\\n”,p[0] —>c[1]); /*输出(1)*/ printf(“%s\\n”,(++p[0]) —>s);/*输出(2)*/ printf(“%c\\n”,s2.sr.c[2]); /*输出(3)*/ printf(“%d\\n”,s2.d+1); /*输出(4)*/ }
(1)A、M B、J C、D D、B
(2) A、ABCD B、EFGH C、LMN D、IJK (3) A、Q B、V C、Y D、T
(4) A、-32768 B、32768 C、65535 D、0 二、填空题:
1、以下程序的执行结果是 。 typedef struct {
long x[2]; int y[4]; char z[8]; }MYTYPE; MYTYPE a; main() {
printf(“%d\\n”,sizeof(a)); }
2、有如下定义: struct {
int x; char * y;
}tab[2]={{1,”ab”},{2,”cd”}},*p=tab;
则:表达式*p—>y的结果是 (1) 。 表达式*(++p)—>y的结果是 (2) 。 3、有如下定义: struct {
int x; int y;
}s[2]={{1,2},{3,4}},*p=s;
则:表达式++p—>x的结果是 (1) 。 表达式(++p)—>x的结果是 (2) 。 4、以下程序的执行结果是 。 struct stru
{
int x; char c;
}; main() {
struct stru a={10,’x’}; func(a);
printf(“%d,%c\\n”,a.x,a.c); }
func(struct stru b) {
b.x=20; b.c=’y’; }
5、以下程序的执行结果是 。 struct stru {
int x; char c; }; main() {
struct stru a={10,’x’},*p=&a; func(p);
printf(“%d,%c\\n”,a.x,a.c); }
func(struct stru b) {
b—>x=20; b—>c=’y’; }
6、以下程序的执行结果是 。 main() {
union {
int i[2]; long k; char c[4]; }r,*p=&r;
p—>i[0]=0x39; p—>i[1]=0x38;
printf(“%x,%x,%x\\n”,p—>c[0],p—>c[1],
p—>c[2],p—>c[3]);
}
7、以下程序的执行结果是 。 typedef union {
long x[2]; int y[4]; char z[8]; }MYTYPE; MYTYPE a; main() {
printf(“%d\\n”,sizeof(a)); }
8、以下程序的执行结果是 。 struct st {
int x; int *y; }*p;
int s[ ]={10,20,30,40}; struct
a[ ]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]}; main() {
p=a;
printf(“%d,”,p—>x);
printf(“%d,”,(++p) —>x); printf(“%d,”,*(++p) —>y);
printf(“%d\\n”,++(*(++p) —>y)); }
9、以下程序的执行结果是 。 #include
union EXAMPLE {
struct {
int x; int y; }in; int a; int b;
st
共分享92篇相关文档