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
{ 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;