结构体与共同体习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、以下程序运行的输出结果是( )。
main()
{union {char i[2];
int k;
}r;
r.i[0]=2;r.i[1]=0;
printf("%d\n",r.k);
}
A.2 B.1 C.0 D.不确定
2、有以下程序输出结果是( )。
#include
struct stu
{int num;
char name[10];
int age;
};
void fun(struct stu *p)
{printf("%s\n",(*p).name);}
main()
{struct stu students[3]=
{{9801,"zhang",20},{9802,"Wang",19},{9803,"zhao",18}};
fun(students+2);}
A.Zhang B.Zhao C.Wang D.18
3、设有以下定义
typedef union
{ long i;
int k[5];
char c;
} DATE;
struct date
{ int cat;
DATE cow;
double dog;
} too;
DATE max;
则语句printf(〞%d〞,sizeof(struct date)+sizeof(max)))的执行结果是( )。
A.25 B.30 C.18 D.8
4、若已建立下面的链表结构,指针p,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;
5、下列程序的执行结果为( )。
struct s1
{ char *s;
int i;
struct s1 *sip;
}
main()
{ static struct s1 a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}};
struct s1 *p=a;int i=0;
printf("%s%s%s",a[0].s,p->s,a[2].sip->s);
printf("%d%d",i+2,--a[i].i);
printf("%c\n",++a[i].s[3]);
}
A.abcd abcd abcd 2 0 e B.abcd efgh ijkl 2 0 e
C.abcd abcd ijkl 2 0 e D.abcd abcd abcd 2 1 e
6、设有以下语句:
struct st{int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
则表达式( )的值是6。
A.p++->n B.p->n++ C.(*p).n++ D.++p->n
7、下面程序的输出是( )。
main()
{ enum team{my,your=4,his,her=his+10};
printf("%d %d %d %d\n",my,your,his,her);
}
A.0 1 2 3 B.0 4 0 10 C.0 4 5 15 D.1 4 5 15
8、下面程序的输出是( )。
typedef union { long x[2];
int y[4];
char z[8];
} MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));
}
A.32 B.16 C.8 D.24
6.以下函数creatlist用来建立一带头节点的单链表,链表的结构如下图所示,新的
节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next域放入NULL,作为链表结束的标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
h ....
struct node
{ char data;
struct node *next;};
( 【 】 )creatlist( )
{ struct node *h,*s,*r;
char ch;
h=(struct node *)malloc(sizeof(struct node));
r=h;
ch=getchar();
while (ch!=’#’)
{ s=(struct node*)malloc(sizeof(struct node));
s->data=( 【 】 );
r->next=s.r;
r=s;
ch=getchar();}
r->next=( 【 】 );
return h;}
7、 下面程序的输出是_______。
main()
{ enum em{em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}