结构体与共用体相关题目练习 下载本文

内容发布更新时间 : 2024/4/25 23:57:53星期一 下面是文章的全部内容请认真阅读。

结构体与共用体

1.说明一个结构体变量时系统分配给它的内存是

A) 各成员所需要内存量的总和 B) 结构体中第一个成员所需内存量 C) 成员中占内存量最大者所需的容量 D) 结构中最后一个成员所需内存量 2.C语言结构体类型变量在程序执行期间

A) 所有成员一直驻留在内存中 B) 只有一个成员驻留在内存中 C) 部分成员驻留在在内存中 D) 没有成员驻留在内存中 3.设有以下说明语句

struct stu { int a ; float b ; } stutype ;

则下面的叙述不正确的是

A) struct 是结构体类型的关键字 B) struct stu 是用户定义的结构体类型 C) stutype 是用户定义的结构体类型名 D) a和b都是结构体成员名

4.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 【 】 。

struct stud { char num[6]; int s[4]; double ave; } a,*p; 5.程序中有下面的说明和定义

struct abc { int x;char y;} struct abc s1,s2; 则会发生的情况是

A) 编译出错 B) 程序将顺利编译、连接、执行

C) 能顺利通过编译、连接、但不能执行 D) 能顺利通过编译、但连接出错 6.有如下定义

struct person { char name[9]; int age;}; struct person class[10]={ \Johu\, 17,\, 19,\, 18,\, 16}; 根据上述定义,能输出字母M的语句是 A) prinft(\%c\\n\,class[3].name); B) printf(\%c\\n\,class[3].name[1]); C) prinft(\%c\\n\,class[2].name[1]); D) printf(\%c\\n\,class[2].name[0]); 7.下面程序的输出是

A)0 B)1 C)3 D)6 main()

{ struct cmplx { int x; int y;} cnum[2]={1,3,2,7}; printf(\,cnum[0].y/cnum[0].x*cnum[1].x);}

8.下列程序的输出结果是

A)5 B)6 C)7 D)8

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(\,t);} 9.有以下程序

struct stu

{ int num;char name[10]; int age;}; void fun(struct stu *p) { printf(\(*p).name); } main() { struct stu students[3]={{9801,\,20} ,{9802,\, 19} , {9803,\,18} };

fun(students+2); } 输出结果是

A)Zhang B)Zhao C)Wang D)18

10.设有如下定义:

struct sk {int a ;float b ;}data ,*p ; 若有p=&data ; ,则对data中的a域的正确引用是 A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a 11.下面程序的输出结果为

struct st { int x ;int *y ;} *p ;

int dt[4]={10 ,20 ,30 ,40} ;

struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] } ; main()

{ p=aa ;printf(\, ++p->x ) ;

printf(\, (++p)->x) ; printf(\, ++( *p->y)) ; }

A)10 B)50 C)51 D)60

20 60 60 70 20 21 21 31

12.为了建立如图所示的存储结构( 即每个结点含两个域, data 是数据域,next是指向结

点的指针域,)请填空。 data next struct link { char data;【 】}node;

13.有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则

不能把结点b连接到结点a之后的语句是

A)a.next=q; B)p.next=&b; C)p->next=&b; D)(*p).next=q;

struct node { char data; struct node *next;} a,b,*p=&a,*q=&b; data next data next ┌──┬──┐ ┌──┬──┐ a │ 5 │ │ b│ 9 │ 0 │ └──┴──┘ └──┴──┘ ↑p ↑q

14.当说明一个共用体变量时系统分配给它的内存是

A) 各成员所需要内存量的总和 B) 共用体中第一个成员所需内存量 C) 成员中占内存量最大者所需的容量 D) 共用体中最后一个成员所需内存量 15.以下对C语言中共用体类型数据的叙述正确的是

A) 可以对共用体变量名直接赋值 B) 一个共用体变量中可以同时存放其所有成员 C) 一个共用体变量中不可以同时存放其所有成员 D) 共用体类型定义中不能出现结构体类型的成员 16.C语言共用体类型变量在程序运行期间

A) 所有成员一直驻留在内存中 B) 只有一个成员驻留在内存中 C) 部分成员驻留在在内存中 D) 没有成员驻留在内存中

17.字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结

果是

#include〈stdio.h〉 main( )

{ union { int i[2];long k; char c[4];}r,*s=&r; s->i[0]=0x39; s->i[1]=0x38; printf(\,s->c[0]) } A)39 B)9 C)38 D)8

18.若有以下说明和定义语句,则变量w在内存中所占的字节数是【 】。

union aa { float x,y ; char c[6]; };

struct st { union aa v;float b[5];double ave;} w;

19.设有以下定义:

#include “alloc.h”

typedef union { long i ;int k[5] ;char c ;}DATE ; struct date

{ int cat ;DATE cow ;double dog ;}too ; DATE max ;

则下列语句的执行结果是

printf(\,sizeof(struct date)+sizeof(max)); A)25 B)30 C)18 D)8

20.已知字符0的ASCII码为十六进制的30,下面程序的输出是

2

A)6 B)9 C)0 D)3 main()

{ union { unsigned char c;unsigned int i[4];}z; z.i[0]=0x39; z.i[1]=0x36; printf(\,z.c);}

21.变量a所占内存字节数是

A)4 B)5 C)6 D)8 union U

{ char st[4] ;int i ;long l ;} ; struct A { int c;union U u;} a ;

22.以下对枚举类型名的定义中正确的是

A) enum a={one ,two ,three} ;

B) enum a {one=9 ,two=-1 ,three} ; C) enum a={\,\,\; D) enum a {\,\,\; 23.设有如下枚举类型定义:

enum language { Basic=3 ,Assembly ,Ada=100 ,COBOL ,Fortran} ; 枚举量Fortran的值为

A)4 B)7 C)102 D)103 24.下面程序的输出是

A)0 1 2 3 B)0 4 0 10 C)0 4 5 15 D)1 4 5 15 main()

{ enum team { my ,your=4 ,his ,her=his+10}; printf(\,my,your,his,her);}

25. 以下选项中,能定义s为合法的结构体变量的是

A)typedef struct abc B)struct

{ double a; { double a; char b[10]; char b[10]; } s; } s;

C)struct ABC D)typedef ABC { double a ; { double a; char b[10] ; char b[10] ; } ABC s ; } ABC s ;

26.下面对的叙述中不正确的是

A) 用typedef可以定义各种类型名,但不能用来定义变量 B) 用typedef可以增加新类型

C) 用typedef只是将已存在的类型用一个新的标识符来代表 D) 使用typedef有利于程序的通用和移植 27.下面程序的输出是

A)32 B)16 C)8 D)24

typedef union { long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; main()

{ printf(\,sizeof(them));}

28. 以下各选项企图说明一种新的类型名,其中正确的是

A) typedef v1 int; B) typedef v2=int; C) typedefv1 int v3; D) typedef v4: int; 29. 以下程序的输出结果是

struct HAR

{ int x, y; struct HAR *p;} h[2]; main()

{ h[0].x=1;h[0].y=2; h[1].x=3;h[1].y=4; h[0].p=&h[1]; h[1].p=h;

printf(“%d %d \\n”,(h[0],p)->x,(h[1],p)->y);

3