【习题】
一、选择题
1.当声明一个结构体变量时系统分配给它的字节数是( )。
A.各成员所需字节数的总和。 B.结构中第一个成员所需的字节数。
C.成员中占字节数最大者所需的容量。
D.结构体最后一个成员所占字节数
2.下列有关结构体和共用体,叙述正确的是( )。
A.共用体变量每一时刻只有一个成员起作用
B.共用体变量所占用的存储单元是各个成员所需存储空间之和
C.结构体变量所占用的存储单元取决于占用存储单元最大的成员
D.共用体成员不能是结构体
3.若有以下定义:
struct example{
int x;
int y;}v1;
则正确引用或定义是( )。
A.example.x=10; B.example v2.x=10;
C.struct v2;v2.x=10; D.struct example v2={10};
4.下列对结构体类型变量定义不正确的是( )。
A. struct teacher{ B. struct{
int num; int num;
int age; int age;
}teach1; }teach1,teach2;
C. struct{ D. struct teacher{
int num; int num;
int age; int age;
}teacher; };
struct teacher teach1; struct teacher teach1;
5. 根据下面的定义,能打印出字母 M 的语句是( )。
struct person {
char name[9]; int age;};
struct person class[10]={"John",17, "Paul",19,
"Mary",18, "Adam",16};
A.printf("%c\n",class[3].name);
B.printf("%c\n",class[3].name[1]);
C.printf("%c\n",class[2].name[0]);
D.printf("%c\n",class[2].name[1]);
6.若有以下定义,则程序输出结果是( )。
struct STU{
char name[20],sex[8];
int age;};
main(){
struct STU student={“may”,“female”,18};
printf(“%d\n”,sizeof(student));}
A.11 B.32 C.20 D28
7.若有以下定义:
struct STU{
char name[15],sex;
struct{
int math,chinese,english;}SCORE;
}K;
则下列赋值语句中正确的是()
A.K.math=90; B.K.sex=”M”;
C.K.SCORE.chinese=95; D.SCORE.english=60;
8.以下程序输出的结果是()
struct str{
char name[15],sex;
int age;};
main(){
struct str tea[3]={“lcl”,’f’,26,“lp”,’m’,40,
“cyg”,’f’,28};
printf(“%s,%c,%d\n”,tea[1].name,tea[1].sex,tea[1].age);}
A.lcl,f,26 B.lp,m,40 C.cyg,f,28 D.lp,m,28
9.若有定义和语句,则以下选项中语句正确的是( )。
union data{
int i;
char c;
float f;}x;
int y;
A.x=10.5; B.x.c=101; C.y=x; D.printf(“%d\n”,x);
10.运行以下程序输出结果是( )。
union un{
short b;
char c[6];};
main(){
union un u;
printf(“%d %d”,sizeof(u),sizeof(u.c));}
A.8 8 B.14 8 C.10 6 D.6 6
11.以下叙述中错误的是( )。
A.可以通过 typedef 增加新的类型。
B.可以用 typedef 将已存在的类型用一个新的名字来代表。
C.用 typedef 定义新的类型名后,原有类型名仍有效。
D.用 typedef 可以为各种类型起别名,但不能为变量起别名。
12.有如下说明
typedef struct ST{
long a;int b;char c[2];} NEW;
则下面叙述中正确的是( )。
A.以上的说明形式非法 B.ST 是一个结构体类型
C.NEW 是一个结构体类型 D.NEW 是一个结构体变量
二、填空题
1.运算符“.”称作 运算符,优先级为 ,运算顺
序 。
2.运算符“->”称作 运算符,优先级为 ,运算顺
序 。
3.无论是结构体变量,还是共用体变量都不能对其变量直接进行输入
和输出,只能对 进行输入和输出操作。
4.枚举变量的赋值只能取枚举类型定义中的 。
5.用 typedef 可以 ,但是不能用来定义新类型。
三、编程题
1.编写程序定义一个结构体类型,包含信息:学号、姓名和成绩,定
义两个结构体变量,输入两条记录并输出。
2. 编写程序定义一个结构体类型,包含信息:学号、姓名和成绩,定
义包含 5 个元素的结构体数组,输入 5 条记录并输出。
3.在上面题目基础上,编写输入函数、输出函数和排序函数(按照成
绩从到到低)。

