当前位置:
文档之家› 11第十一章结构体和联合体练习
11第十一章结构体和联合体练习
A、将一组数据作为一个整体,以便于其中的成员共享同一存储空间
B、将一组具有相同数据类型的数据作为一个整体,以便于其中的成员共享同一存储空间
C、将一组相关数据作为一个整体,以便程序中使用
D、将一组具有相同数据类型的数据作为一个整体,以便程序中使用
5、以下typedef的叙述不正确的是()。
A、用typedef可以定义各种类型名,但不能用来定义变量
复数的加法定义为:
(a+bi)+(c+di)=(a+c)+(b+d)i
复数的乘法定义为:
(a+bi)(c+di)=(ac-bd)+(bc+ad)i
请在程序的空白处填入一条语句或一个表达式。
#include <stdio.h>
struct mulp_number
{
float real,virtual;
}stud[5]={“李萍”,92,”王兵”,72,”钟虎”,83,”孙逊”,60,”徐军”,88};
(4)A、linkB、pC、p—>linkD、top—>link
(5)A、p—>linkB、top—>linkC、topD、link
18、阅读以下程序,请选择正确的编号填空。
#include <stdio.h>
typedef struct str1
{
char c[5];
char *s;
}st;
main()
sum.virtual=(2);
mul.real=(3)—(4);
mul.virtual=(5)+(6);
printf(“sum.real=%f,sum.virtual=%f\n”,
sum.real,sum.virtual);
printf(“mul.real=%f,mul.virtual=%f\n”,
A、该共用体中第一个成员所需存储空间
B、该共用中最后一个成员所需存储空间
C、该共用体中占用最大存储空间的成员所需存储空间
D、共用体中所有成员所需存储空间的总和
3、共用体类型在任何给定时刻,()。
A、所有成员一直驻留在结构中
B、只有一个成员驻留在结构中
C、部分成员驻留在结构中
D、没有成员驻留在结构中
4、使用共用体union的目的是()。
{
int no;
char name[10];
float score;
}
C、struct student
{
int no;
char name[10];
float score;
}stud[20];
D、struct
{
int no;
char name[10];
float score;
}stud[100];
12、正确的k值是()。
{
int x;
char * y;
}tab[2]={{1,”ab”},{2,”cd”}},*p=tab;
则:表达式*p—>y的结果是(1)。
表达式*(++p)—>y的结果是(2)。
3、有如下定义:
struct
{
int x;
int y;
}s[2]={{1,2},{3,4}},*p=s;
则:表达式++p—>x的结果是(1)。
}
A、12,34 B、34,12
C、12,00 D、34,00
16、以下程序的功能是读入一行字符,且每个字符存入一个结点,按输入顺序建立一个链表的结点序列,然后再按相反顺序输出并释放全部结点,请选择正确的编号填空。
#include <stdio.h>
#include <alloc.h>
#define getnode(type) ((type*)malloc(sizeof(type)))
{
staticsts1[2]={{“ABCD”,”EFGH”},
{“IJK”,”LMN”}};
static struct str2
{
st sr;
int d;
}s2={“OPQ”,”RST”,32767};
st *p[ ]={&s1[0],&s1[1]};
printf(“%c\n”,p[0]—>c[1]); /*输出(1)*/
B、birthday.year=1958
C、person.birthday.year=1958
D、person.year=1958
11、在如下结构体定义中,不正确的是()。
A、struct student
{
int no;
char name[10];
float score;
}
B、struct stud[20]
}
while (top!=NULL)
{
p=(5);
top=p—>link;
printf(“%c”,p—>info);
free(p);
}
}
(1)A、*pB、*linkC、*topD、link
(2)A、topB、pC、nodeD、struct node
(3)A、topB、top—>linkC、pD、p—>link
表达式(++p)—>x的结果是(2)。
4、以下程序的执行结果是。
struct stru
{
int x;
char c;
};
main()
{
struct stru a={10,’x’};
func(a);
printf(“%d,%c\n”,a.x,a.c);
}
func(struct stru b)
{
b.x=20;
b.c=’y’;
}
5、以下程序的执行结果是。
struct stru
{
int x;
char c;
};
main()
{
struct stru a={10,’x’},*p=&a;
func(p);
printf(“%d,%c\n”,a.x,a.c);
}
func(struct stru b)
{
b—>x=20;
b—>c=’y’;
8、若有以下说明和语句:
struct worker
{
int no;
char *name;
}work,*p=&work;
则以下引用方式不正确的是()。
A、work.noB、(*p).no
C、p—>noD、work—>no
9、以下程序执行后的正确结果是()。
struct tree
{
int x;
char *s;
mul.real,mul.virtual);
}
12、以下程序用于在结构体数组中查找分数最高和最低的同学姓名和成绩。请在程序中的空白处填入一条语句或一个表达式。
#include <stdio.h>
main()
{
int max,min,i,j;
static struct
{
char name[8];
int score;
printf(“%s\n”,(++p[0])—>s);/*输出(2)*/
printf(“%c\n”,s2.sr.c[2]); /*输出(3)*/
printf(“%d\n”,s2.d+1); /*输出(4)*/
}
(1)A、MB、JC、DD、B
(2)A、ABCDB、EFGHC、LMND、IJK
(3)A、QB、VC、YD、T
}
6、以下程序的执行结果是。
main()
{
union
{
int i[2];
long k;
char c[4];
}r,*p=&r;
p—>i[0]=0x39;
p—>i[1]=0x38;
printf(“%x,%x,%x\n”,p—>c[0],p—>c[1],
p—>c[2],p—>c[3]);
}
7、以下程序的执行结果是。
}a;
a.x=0x1234;
printf(“%x,%x\n”,a.b.c1,a.b.c2);
}
A、12,34 B、34,12
C、12,00 D、34,00
15、以下程序的执行结果是()。
minin()
{
union
{
char s[2];
int i;
}a;
a.i=0x1234;
printf(“%x,%x\n”,a.s[0],a.s[1]);
struct st a[ ]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};
main()
{
p=a;
printf(“%d,”,p—>x);
printf(“%d,”,(++p)—>x);
printf(“%d,”,*(++p)—>y);
printf(“%d\n”,++(*(++p)—>y));
(4)A、-32768B、32768C、65535D、0
二、填空题:
1、以下程序的执行结果是。
typedef struct
{
long x[2];
int y[4];
char z[8];
}MYTYPE;
MYTYPEa;