1. 20901、设有以下说明语句:Cstruct Stu{ int a;float b;}stutype;则下面的叙述不正确的是。
A) struct是结构体类型的关键字B) struct Stu是用户定义的结构体类型C) stutype是用户定义的结构体类型名D) a和b都是结构体成员名2. 20902、根据下面的定义,能打印出字母M的语句是。
Dstruct Person{ char name[9];int age;};struct Person class[10]={ "John", 17,"Paul", 19,"Mary",18,"adam",16};A) printf("%c\n",class[3]. name);B) printf("%c\n",class [3]. name[l]);C) printf ("% c\n",class [2]. name [1]);D) printf("%c\n",class [2]. name[0]);3. 20903、若有以下说明和语句:Astruct Student{ int num;int age;}stu,*p;p=&stu;则以下对结构体变量stu中成员age的引用方式不正确的是。
A) *p.age B) p->age C) (*p).age D) stu.age4. 20904、若有以下程序段:struct Student{ int num;int age;};struct Student stu[3]={{101,20},{102,19},{103,20}};void main (){ struct Student * p;p=stu;…}则以下引用形式不合法的是。
DA) (p++)->num B) p++ C)(*p). num D) p=&stu. age5. 20916、设有如下定义:Cstruck Sk{ int a;float b;} data;int *p;若要使p指向data中的a域,正确的赋值语句是。
A)p=&a; B)p=data.a; C)p=&data.a; D)*p=data.a6. 20906、有以下定义和语句,则值为6的表达式是。
Dstruct S{ int i1;struct S * i2;};static struct S a[3]={5,&a[1],7,&a[2],9,' \0' },*ptr;ptr=&a[0];A) ptr-> i1++ B) ptr++->i1 C)*ptr->i1 D) ++ptr->i17. 20907、下面对typedef的叙述中不正确的是。
BA)用typedef可以定义各种类型名,但不能用来定义变量B)用typedef可以增加新类型C)用typedef只是将已存在的类型用一个新的标识符来代表D)使用typedef有利于程序的通用和移植8. 20908、当说明一个共用体变量时系统分配给它的内存是。
CA)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量9. 20909、C语言共用体类型变量在程序运行期间。
BA)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中10. 20910、在16位IBM-PC机上使用C语言,若有如下定义:Dstruct Data{ int i;char ch;double f;}b;则结构变量b占用内存的字节数是。
A) 1 B) 2 C) 8 D) 1111. 20911、设有如下说明:Atypedef structchar c;double x;}STD;则以下选项中,能正确定义结构体数组并赋初值的语句是。
A) STD tt[2]={{1,'A',62},{2,'B',75}};B) STD tt[2]={1,"A",62,2,"",75};C) struct tt[2]={{1,'A'},{2,'B'}};D) struct tt[2]={{1,"A",62.5},{2,"B",75.0}};12. 20912、若有以下程序段:Bstruct Dent{ int n;int *m;};int a=1,b=2,c=3;struct Dent s[3] = { {101,&a},{102,&b},{103,&c} };struct Dent *p=s;则以下表达式中值为2的是。
A) *(p++)->m B) *(++p)->m C) (*p).m D) (p++)->m13. 20913、若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是。
CA) q->next=NULL;p=p->next;p->next=q;B) p=p->next;q->next =p->next;p->next =q;C) p=p->next;q->next =p;p->next =q;D) p=(*p). next;(*q). next=(*p). next;(*p). next= q;14. 20914、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则空格中应填入的内容是。
Dint *p;p= malloc(sizeof ( int));A) int B) int * C)(* int ) D) (int *)15. 20915、对于如下定义的枚举型:Benum List1{ x1,x2,x3,x4=6,x5,x6 };枚举常数x2和x6的值分别是。
A)1,6 B)1,8 C)2,6 D)2,816. 20905、设有如下定义:Cstruct Sk{ int n;float x;若要使p指向data中的n域,正确的赋值语句是。
A) p=&data.n; B)*p=data.n;C)p=(struct Sk*)&data.n; D)p=(struct Sk*)data.n;17. 20917、下面程序的运行结果是。
D#include <stdio.h>void main(){struct Cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0]. y/cnum[0]. x*cnum[1]. x);}A) 0 B) 1 C) 3 D) 618. 20918、以下scanf函数调用语句中对结构体变量成员的不正确引用是。
Dstruct 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",&(p->sex));D) scanf ("%d", p->age);19. 20919、已知学生记录描述为:Dstruct Student{ int no;char name[20];char sex;lstruct{ 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;20. 20920、若要说明一个类型名STP,使得定义语句STP s;等价于char *s;,以下选项中正确的是。
DA) typedef STP char *s; B) typedef *char STP;C) typedef STP *char; D) typedef char* STP;。