结构体与共用体及用户定义类型 下载本文

printf(“%d\\n”,++(p->x)); }

(36) 假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是

A) free(q); p->next=q->next; B) (*p).next=(*q).next; free(q); C) q=(*q).next; (*p).next=q; free(q); D) q=q->next; p->next=q; p=p->next; free(p);

(37) 有如下定义

struct person{char name[9]; int age;}; strict person class[10]={“Johu”, 17, “Paul”, 19 “Mary”, 18, “Adam 16,};

根据上述定义,能输出字母M的语句是 A) prinft(“%c\\n”,class[3].mane); B) pfintf(“%c\\n”,class[3].name[1]); C) prinft(“%c\\n”,class[2].name[1]); D) printf(“%^c\\n”,class[2].name[0]); (38) 以下对结构体类型变量的定义中,不正确的是

A) typedef struct aa B) #define AA struct aa { int n; AA {int n; float m; float m; }AA; }td1; AA td1;

C) struct D) struct { int n; { int n; float m; float m; }aa; }td1; stuct aa td1;

(39) 若已建立如下图所示的单向链表结构, P data next

在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是 A) p =p->next; s->next=p; p->next=s;

B) p =p->next; s->next=p->next; p->next=s; C) s->next=NULL; p=p->next; p->next=s;

D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; (40) 下列程序的输出结果是

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(\ }

(41) 有以下结构体说明和变量的定义,且如下图所示指针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

(42) 变量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;

(43) 以下选项中,能定义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;

(44) 以下程序的输出结果是 A) 2 B) 1 C)0 D)不确定 main()

{ union { char i[2]; int k; }r; r.i[0]=2; r.i[1]=0; printf{“%d\\n”,r.k}; }

(45) 设有以下定义或语句,则输出的结果是(指针变量占两个字节) A) 20 B) 16 C) 14 D)12 struct date { long *cat; struct date *next; double dog; }too;

printf(“%d\\n”,sizeof(too));

(46) 有以下程序

#include struct stu { int num; char name[10]; int age; };

void fun(struct stu *p) { printf(\ main() {

struct stu students[3]={ {9801,\

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

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

{9802,\ {9803,\

(47) 设有以下说明和定义: typedef union

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

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

则下列语句的执行结果是

printf (\ A) 26 B) 30 C) 18 D) 8

(48) 设有如下定义: 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

(49) 若程序中有下面的说明和定义 struct abc {int x;char y;} struct abc s1,s2; 则会发生的情况是

A) 编译进错 B) 程序将顺利编译`连接`执行

C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错

(50) 若有下面的说明和定义,则sizeof(struct aa) 的值是 struct aa

{ int r1;double r2; float r3; union uu{char u1[5]; long u2[2]; } ua; } mya; A)30 B)29 C)24 D)22

(51) 字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是 #include main( )

{ union { int i[2]; long k; char c[4]; }r,*s=&r;

s->i[0]=0x39; s->i[1]=0x38;

printf(\ } A) 39 B) 9 C) 38 D) 8

(52) 设有以下定义:

typedef union { long i;int k[5];char c;}DATE; struct date { int cat;DATE cow;double dog;}too; DATE max;

则下列语句的执行结果是

printf(\ A) 25 B) 30 C) 18 D) 8

(53) 根据下面的定义,能打印出字母M的语句是 A) printf(\ D) printf(\ B) printf(\ C) printf(\struct person { char name[9]; int age;}; struct person class[10]={\ \\\

(54) 下面程序的输出是

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

{ struct cmplx { int x; int y; } cnum[2]={1,3, 2,7};

printf(\

(55) 已知字符0的ASCII码为十六进制的30,下面程序的输出是 A) 6 B) 9 C) 0 D) 3 main()

{ union { unsigned char c;