C
第十章 常见题型
一.选择题:
1.若已知int类型占两个字节,则下述程序运行结果为________。
struct st
{
char a[10];
int b;
double c;
};
printf("%d\n",sizeof(struct st));
A.8
B.16
C.30
D.20
2.若有以下说明,则对结构体变量exp10中成员std的引用不正确的是________。
struct example
{
int std;
float std1;
}exp10,*p;
A.exp10.std
B.example.std
C.p->std
D.(*p).std
3.typedef double DOU的作用是________。
A.建立一个新的数据类型
B.定义一个双精度变量
C.定义了一个新的数据类型标识符
D.语法错误
4.若有以下的说明,则对初值中字符'a'的引用方式为________。
static struct
{
char ch;
double x;
char a[];
}c[2][2]={{{'a',3.5,'bc'},{'c',4.5,'de'},{'m',8.6,'abc'}}};
A.c.ch
B.c[0][0].ch
C.c[1][1].ch
D.a[0]
5.设一整型(int)变量占用2个字节则下述共同体变量x所占用内存字节数为________。
union exp
{ int i;
float j;
double k;
}x;
A.14个
B.7个
C.8个
D.随机而定
6.C语言联合类型在任何给定时刻________
A.所有成员一直驻留在结构中
B.只能有一个成员驻留在结构中
C.部分成员驻留在结构中
D.没有成员驻留在结构中
7.在16位IBM-PC机上使用C语言,如定义下列联合类型变量:
union data
{
int i;
char ch;
float f;
}a,b,c;
则联合变量,a,b,c名占用内存的字节数为________。
A.1
B.2
C.4
D.7
二.填空题:
1.设有下面的程序段,在16位PC机上执行后a的16进制表示为________,b的值为________,c的值为________,d的值为________。
int a,b,c;
long d;
b=(a=32767,a+1);
c=d=0xFFFF;
A.0x7FFF
-0x32768
-1
0x65535
B.0x7FFF
-0x32768
-1
065535
C.0x7FFF
-32768
-01
0x65535
D.0x7FFF
-32768
-1
65535
2.阅读下面程序,并给出结果________。
main()
{
union EXAMPLE { struct{
int x;
int y;
}in;
int a;
int b;
}e;
e.a=1;e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
printf("%d%d",e.in.x,e.in.y);
}
A.3 8
B.4 8
C.4 7
D.2 5
答案
一.选择题:
1.D
评讲: 结构是若干个变量的集合,这些变量的类型可以不同,结构有助于组织和处理复杂的数据,这一点对于编写大型的应用程序特别有利。
结构同其它变量一样,也需要先定义后使用,结构定义
的一般形式如下:
struct 结构体
{ 类型名1 结构成员名1;
类型名2 结构成员名2;
...
};
结构体成员可以是简单类型、数组、指针或已定义过的结构等。
结构的引用有三种方式:
(1)结构变量名.成员名
(2)指针变量名->成员名
(3)(*指针变