unsigned int i[4]; } z; z.i[0]=0x39; z.i[1]=0x36; printf(\
(56) 下面程序的输出是
A) 32 B) 16 C) 8 D) 24
typedef union { long x[2]; int y[4]; char z[8]; } MYTYPE; MYTYPE them; main()
{ printf(\
(57) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是
A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s;
D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;
(58) 下面程序的输出结果为 struct st { int x; int *y; } *p;
int dt[4]={10,20,30,40};
struct st aa[4]={ 50,&dt[0],60,&dt[1], 70,&dt[2],80,&dt[3] }; main() { p=aa;
printf(\ ); printf(\printf(\}
A) 10 B) 50 C) 51 D) 60
20 60 60 70 20 21 21 31 (59) 有以下程序: #include
{ int i; char ch[2]; } a; main()
{ a.ch[0]=13; a.ch[1]=0; printf(\ } 程序的输出结果是(注意: ch[0]在低字节,ch[1]在高字节。) A) 13 B) 14 C) 208 D) 209
(60) 设有以下语句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\\0'},*p; p=&a[0];
则表达式 【60】 的值是6。 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
二、填空题:
(1)以下程序运行后的输出结果是 【1】 。 struct NODE
{ int num; struct NODE *next; } ; main()
{ struct NODE s[3]={{1, '\\0'},{2, '\\0'},{3, '\\0'}}, *p, *q, *r; int sum=0;
s[0].next=s+1; s[1].next=s+2; s[2].next=s; p=s; q=p->next; r=q->next;
sum+=q->next->num; sum+=r->next->next->num; printf(\ }
(2)以下程序运行后的输出结果是【2】 。 struct NODE { int k;
struct NODE *link; }; main()
{
struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q)
{ p->k=++i; p++; q->k=i++; q--; } q->k=i;
for(i=0;i<5;i++)
printf(\ printf(\}
(3) 以下程序的运行结果是【3】 # include
char name[10]; long sno; float score; }STU; main( ) { STU
a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d; d=a;
if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s\\n”,d.sno,p->name); }
(4) 已有定义如下: struct node { int data;
struct node *next;| } *p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。 请填空。
p=(struct node *) malloc( 【4】 );
(5) 设有以下定义 struct ss
{ int info;struct ss *link;}x,y,z; 且已建立如下图所示链表结构:
X Y Z
请写出删除点y的赋值语句【5】 。
(6) 下面程序的运行结果是: [6] 。 typedef union student { char name[10]; long sno; char sex; float score[4]; }STU; main() { STU a[5];
printf(“%d\\n”,sizeof(a)); }
(7) 以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。 struct node {int info;
【7】 link; }
(8) 以下程序段用于构成一个简单的单向链表,请填空。 struct STRU
{ int x, y ; float rate; 【8】 p; } a, b;
a.x=0; a.y=0; a.rate=0; a.p=&b; b.x=0; b.y=0; b.rate=0; b.p=NULL;
(9) 若有如下结构体说明: struct STRU
{ int a, b ; char c; double d: struct STRU p1,p2; };
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型 【9】 t[20];
(10) 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。 struct st
{ char name[20]; double score; }; main()
{ struct st ex;
printf(“ex size: %d\\n”,sizeof( 【10】 )); }
(11) 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 [11] 。
Struct stud
{ char num[6]; int s[4]; double ave; } a,*p;
(12) 有以下定义和语句,则sizeof(a)的值是 【12】 ,而sizeof(a.share)的值是 【13】 struct date{ int day;
int month; int year; union{int share1
float share2; }share; }a;
(13) 若以下定义和语句,则sizeof(a)的值是 【14】 ,而sizeof(b)的值是 【15】 struct { int day; char mouth; int year;} a, *b; b=&a;
(14) 变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指针域,data用以存放整型数. 请填空 , 完成此结构的类型说明和变量root的定义 sp next data
┌─┬─┬─┐ root│ │ │ │ └─┴─┴─┘ struct list { char *sp; 【16】 ; 【17】 ; }root;
(15) 有以下说明定义和语句,可用a.day引用结构体成员day, 请写出引用结构体成员a.day的其它两种形式 【18】 、【19】 。
struct{int day;char mouth;int year;}a,*b; b=&a;
(16) 现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针域,next是指向结点的指针域。请填空完成此结构的类型定义和说明。
struct link
{【20】 ; 【21】;} *head;