int dt[4] ={10,20,30,40};
struct stu a[4]={50,&dt[0],60,&dt[1], 70,&dt[2],80,&dt[3] }; main() {p=a;
printf(“%d,”,++p->x); printf(“%d,”,(++p)->x);
printf(“%d\\n”,++(*p ->y)); }
A)10,20,20 B)50,60,21 C)51,60,21 D)60,70,31
【题19】若有以下说明和语句,则下面表达式中值为1002的是( D )。 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).age
【题20 】以下对结构体变量stul 中成员age 的非法引用是(B)。 Struct student {int age; int num; }stul,*p; p=&stul;
A)stul.age B)student.age C)p—>age D)(*p).age
【题21】设有以下说明和定义语句,则下面表达式中值为3的是( D )。 Struct s {int i1;
struct s*i2; };
static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr; ptr=&a[1];
A)ptr—>i1++ B)ptr++—>i1
【题22 】以下程序的功能是:读入一行字符(如:a,?.y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释
放全部结点。请选择正确的内容填入[ ]中。 #include
#define getnode(type)[B]malloc(sizeof(type)) main()
{struct node {char info;
struct node*link; }*top,*p; char c;
top=NULL;
while((c=getchar())[D]) {p=getnode(struct node); p—>info=c; p—>link=top; top=p; }
while(top) {[B];
top=top—>link; putchar(p—>info); free(p); } }
[1]A)(type) B)(type*) C)type D)type*[B ] [2]A)= =?\\0? B)!=?\\0? C)= =?\\n? D)=?\\n?[D] [3]A)top=p B)p=top C)= =top D)= =p [B]
【题23】若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ 中应填入的内容是( D )。 Int*p;
P=[ ]malloc(sizeof(int));
A)int B)int* C)(*int) D)(int*)
【题24】当说明一个共用体变量时系统分配给它的内存是( C )。 A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量
【题25 】以下对C语言中共用体类型数据的叙述正确的是( C )。 A)可以对共用体变量名直接赋值
B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不可能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员
]
【题26】若有以下定义和语句: union data {int i; char c; float f; }a; int n;
则以下语句正确的是( B )。
A)a=5; B)a={2,?a?,1.2}; C)printf(“%d\\n”,a); D)n=a;
【题27】设有以下说明,则下面不正确的叙述是( C )。 Union data { int i; char c; float f; }un;
A)un所占的内存长度等于成员f的长度
B)un的地址和它的各成员地址都是同一地址 C)un可以作为函数参数
D)不能对un赋值,但可以在定义un时对它初始化
【题28 】C语言共用体型变量在程序运行期间 ( B ) 。 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中
【题29】以下程序的运行结果是 ( B ) 。 #include “stdio.h” main()
{ union {long a; int b; char c; }m;
printf(“%d\\n”,sizeof(m)); }
A) 2 B)4 C)6 D)8
【题30】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果。 #include “stdio.h” main()
{union {int a[2]; long b;
char c[4]; }s; s.a[0]=0x39; s.a[1]=0x38;
printf(“%lx\\n”,s.b); /*【B】*/ printf(“%c\\n”,s.c[0]); /*【B】*/ }
【1】A)390038 B)380039 C)3938 D)3839 【2】A)39 B)9 C)38 D)8
【题31】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果. #include “stdio.h” main() {int j;
union {int a; long b;
unsigned char c; }m
m.b=0x12345678;
printf(“%x\\n”,m.a;) /*【B】*/ printf(“%x\\n”,m.c;) /*【B】*/ }
【1】A)1234 B)5678 C)12345678 D)0 【2】A)12 B)78 C)1234 D)5678
【题33】以下程序的运行结果是 (A ) . #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
【题34】使用typedef定义一个新类型的正确步骤是( C) . A)2,4,1,3 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1 1.把变量名换成新类型名.
2.按定义变量的方法写出定义体. 3.用新类型名定义变量. 4.在最前面加上关键字 .
【题35】下面对typedef的叙述中不正确的是 ( B ) . A)用typedef可以定义各种类型名,但不能用来定义变量 B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植
【题36】以下程序的运行结果是 ( C ).. . typedef union {long a[2]; int b[4]; char c[8]; }TY TY our; main()
{printf (“%d\\n”,sizeof(our)); }
A)32 B)16 C)8 D)24
2 填 空 题
【题37】以下程序的运行结果是 【10,x 】. 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?; }
【题38】 以下程序的运行结果是【2,3】. main()
.