当前位置:文档之家› C语言程序设计 结构体与共用体

C语言程序设计 结构体与共用体

页眉内容一、选择题1、定义结构类型时,下列叙述正确的是()A、系统会按成员大小分配每个空间B、系统会按最大成员大小分配空间C、系统不会分配空间D、以上说法均不正确2、已知结构类型变量x的初始化值为{“20”,30,40,35.5},请问合适的结构定义是()A、Struct s{int no;int x,y,z};B、Struct s{char no[2];int x,y,z};C、Struct s{int no;float x,y,z};D、Struct s{char no[2];float x,y,z};3、若程序中有定义struct abc{int x;char y;};abc s1,s2;则会发生的情况是()A、编译时会有错误B、链接时会有错误C、运行时会有错误D、程序没有错误4、已知学生记录描述为struct student{int no;char name[20];char set;struct{int year;int month;int day;}birth;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是( ).A)year=1984; B)birth.year=1984;month=11; birth.month=11;day=11; birth.day=11;C)s.year=1984; D)s.birth.year=1984;s.month=11; s.birth.month=11;s.day=11; s.birth.day=11;5、当说明一个结构体变量时系统分配给它的内存是( ).A)各成员所需内存量的总和 B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量6、以下对结构体类型变量的定义中不正确的是( ).A)#define STUDENT struct student B)struct studentSTUDENT {int num;{int num; float age;float age; }std1;}std1;C)struct D)struct{int num; int num;float age; float age;}std1; }student;struct student std1; 7、设有以下说明语句struct stu{int a;float b;}stutype;则下面的叙述不正确的是( ).A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名8、C语言结构体类型变量在程序执行期间( )..A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中9、在16位IBM-PC机上使用C语言,若有如下定义:struct data{int i;char ch;double f;}b;则结构变量b占用内存的字节数是( ).A)1 B)2 C)3 D)410、以下程序的运行结果是( ).#include “stdio.h”main(){struct data{int year,month,day;}today;printf(“%d\n”,sizeof(struct data));}A)6 B)8 C)10 D)1211、若有以下定义和语句;struct student{int age;int num ;};struct student stu [3]={{1001,20 },{1002,19},{1003,21}};main(){struct student *p;p=stu;…..}则以下不正确的引用是( )。

A)(P++)—》num B)p++ C)(*p).num D)p=&stu.age12、以下scanf函数调用语句中对结构体变量成员的不正确引用是( )。

stuct 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”“%d”,P->age);13、有以下定义和语句,则以下引用形式不合法的是( )。

Struct s{int i1;struct s*i2,i0;};static struct s a[3 ]={2,&a[1],’\0’,4,%a[2],&a[0],6,’\0’,&a[1]},*ptr;ptr=a;A) ptr->i1++ B)*ptr->i2 C)++ptr->i0 D) ptr->i114、设有如下定义:struct sk{int n;float x;}data,*p;若要使P指向data中的n域,正确的负值语句的是( )。

A、p=&data.n;B) *p=data.n;C)p=(struct sk*)&data.n;D)p=(struct sk*)data.n;15、若哟于以下说明和语句:struct student{int age;int num;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是( )。

A)std.age B)p->age C)(*p).age D) *p.age16、若有以下说明和语句,则下面表达式中值为1002的是( )。

Struct student{int age;int num;};struct student stu[3]={{1001,20},{1002,19},{1003,21};struct student *p;p=stu;A)(p++)—>num B)(p++)—>age C)(*p).num D)(*++p).age17、以下对结构体变量stul 中成员age 的非法引用是()。

struct student{int age;int num;}stul,*p;p=&stul;A)stul.age B)student.age C)p—>age D)(*p).age18、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中应填入的内容是()。

int *p;P=[ ]malloc(sizeof(int));A)int B)int* C)(*int) D)(int*)19、当说明一个共用体变量时系统分配给它的内存是()。

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

A)可以对共用体变量名直接赋值 B)一个共用体变量中可以同时存放其所有成员C)一个共用体变量中不可能同时存放其所有成员D)共用体类型定义中不能出现结构体类型的成员21、若有以下定义和语句:union data{int i;char c;float f;}a;int n;则以下语句正确的是()。

A)a=5; B)a={2,’a’,1.2}; C)printf(“%d\n”,a); D)n=a;22、设有以下说明,则下面不正确的叙述是()。

union data{ int i;char c;float f;}un;A)un所占的内存长度等于成员f的长度 B)un的地址和它的各成员地址都是同一地址C)un可以作为函数参数 D)不能对un赋值,但可以在定义un时对它初始化23、C语言共用体型变量在程序运行期间( ) 。

A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在内存中 D)没有成员驻留在内存中24、以下程序的运行结果是( ) 。

#include “stdio.h”main(){ union {long a;int b;char c;}m;printf(“%d\n”,sizeof(m));}A) 2 B)4 C)6 D)825、以下程序的运行结果是( ) .#include “stdio.h”union pw{int i;char ch[2];}a;main(){ch[0]=13;ch[1]=0;printf(“%d\n”,a,i); }A)13 B)14 C)208 D)209二、填空题1、以下程序的运行结果是【】. .struct n{int x;char c;};main(){struct n a={10,‘x’};func(a);printf(“%d,%c”,a.x,a.c);}func(struct n b){b.x=20;b.c=’y’;}2、以下程序的运行结果是【】.main(){struct EXAMPLE{struct{int x;int y;}in;int a;int b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);}3、以下程序用以输出结构体变量bt所占内存单元的字节数,请在【】内填上适当内容.struct ps{ double i;char arr[20];};main(){ struct ps bt;printf(“bt size : %d\n”,【】;}4、若已定义:struct num{int a;int b;float f;} n={1,3,5.0};struct num * pn = &n;则表达式 pn ->b/n.a*++pn->b的值是【】,表达式 (*pn).a+pn->f的值是【】5、以下程序的运行结果是【】。

struct ks{int a;int *b;} s[4],*p;main(){int n=1 , i;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);}6、以下程序运行结果为【】.struct s{int a;float b;char *c; }main(){static struct s x={19,83.5,”zhang”};struct s *px=&x;printf(“%d%.1f%s\n”,x.a,x.b,x.c);printf(“%d%.1f%s\n”,px―>a,(*px ).b, px―>c);printf(“%c%s\n”,*px―>c―1,&px―>c[1]); }7、设有以下定义和语句,请在printf语句的【】中填上能够正确输出的变量及相应的格式说明。

相关主题