内容正文:
编写说明:《软件与应用技术考纲百套卷》依据山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是《软件与应用技术考纲百套卷》的第13卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
山东省《软件与应用技术考纲百套卷》 第13卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. 下面结构体的定义语句中,错误的是( )
A. struct m{int i; int j; int k; }; struct m a;
B. struct m{int i; int j; int k; }struct m a;
C. struct m{int i; int j; int k; }a;
D. struct{int i; int j; int k; }a;
2. 若有以下语句,以下叙述中正确的是
typedef struct s {int m;} T;
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struct类型的变量
D. T是struct S类型的变量
3. 以下叙述中错误的是( )
A. 可用typedef声明的新类型名来定义变量
B. typedef声明的新类型名必须使用大写字母,否则会出现编译错误
C. 用typedef可以为基本数据类型说明一个新名称
D. 用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名称
4. 若程序中有下面的说明和定义:
struct abc {
int d;
}
struct abc el;
则会发生的情况是( )
A. 编译出错
B. 能顺利编译、连接
C. 能顺利编译、连接,但不能执行
D. 能顺利通过编译,但出现连接错误
5. 以下程序的输出结果是( )
main( )
{struct s
{int x;
float f;
}a[3];
printf("%d", sizeof(a));
}
A. 8
B. 12
C. 24
D. 6
6. 下列哪个操作符用于对结构体变量进行取地址操作?( )
A. &
B. *
C. ->
D. .
7. 下列哪个关键字用于定义结构体类型?( )
A. struct
B. union
C. enum
D. class
8. 下列哪个关键字用于定义联合体类型?( )
A. struct
B. union
C. enum
D. class
9. 下列哪个关键字用于定义枚举类型?( )
A. struct
B. union
C. enum
D. class
10. 下列哪个关键字用于定义类类型?( )
A. struct
B. union
C. enum
D. class
11. 给定以下结构体定义和初始化:
struct date {
int year;
int month;
int day;
};
struct S {
struct date birthday;
char name[20];
} x[4] = {
{2008, 10, 1, "guangzhou"},
{2009, 12, 25, "Tianjin"}
};
语句 `printf("%s,%d", x[0].name, x[1].birthday.year)` 的输出结果为( )
A. guangzhou,2009
B. guangzhou,2008
C. Tianjin,2008
D. Tianjin,2009
12. 给定以下结构体数组和初始化:
struct {
int num;
char name[10];
} x[3] = {1, "china", 2, "USA", 3, "England"};
语句 `printf("n%d,%s", x[1].num, x[2].name)` 的输出结果为( )
A. 2,USA
B. 3,England
C. 1,china
D. 2,England
13. 给定以下结构体类型和变量定义:
struct xyz {
int a;
char c;
} d1 = {1, 'a'};
若定义 `d2` 并赋值 `{6, 'k'}`,以下语句正确的是( )
A. `struct x