内容正文:
编写说明:《软件与应用技术考纲百套卷》依据山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是《软件与应用技术考纲百套卷》的第14卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
山东省《软件与应用技术考纲百套卷》 第14卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于定义结构体类型?( )
A. struct
B. union
C. enum
D. class
2. 关于结构体的说法,下列哪个是错误的?( )
A. 结构体可以包含多个不同类型的数据成员
B. 结构体成员可以是基本数据类型,也可以是数组、指针、其他结构体等
C. 结构体成员不能是函数
D. 结构体成员可以包含自身类型的指针
3. 下列哪个操作符用于通过指针访问结构体成员?( )
A. ->
B. .
C. ::
D. *
4. 下列哪个关键字用于声明结构体变量?( )
A. struct
B. union
C. enum
D. class
5. 关于结构体数组初始化的说法,下列哪个是错误的?( )
A. 可以在声明时对结构体数组的全部或部分成员进行初始化
B. 初始化时可以省略数组长度,根据初始化列表自动确定
C. 初始化列表中的数据类型必须与结构体成员类型一致
D. 结构体数组初始化时,可以只对部分成员进行初始化,未初始化的成员自动赋值为0
6. 以下结构体类型说明和变量定义中,正确的是( )
A. struct ss{char flag; float x; }struct ss a, b;
B. struct {char flag; float x; }ss; ss a, b;
C. struct ss {char flag; float x; }; struct ss a, b;
D. typedef {char flag; float x; }ss; ss a, b;
7. 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,%d,%d", x[0].name, x[1].birthday.year);
的输出结果为( )
A. guangzhou,2009
B. guangzhou,2008
C. Tianjin,2008
D. Tianjin,2009
8. 以下程序运行结果是( )
#include <stdio.h>
#include <conio.h>
struct st1
{float a; int b[5];}c;
main( )
{printf("%d,%d,%d
", sizeof(c.a), sizeof(c.b), sizeof(c));}
A. 4,20,24
B. 4,20,24
C. 8,20,28
D. 8,10,18
9. 结构体mn共有几个成员( )
struct st
{float a; int b;}c;
struct mn
{struct st stul; int d; char e;}
A. 3
B. 5
C. 4
D. 6
10. 所有自定义类型变量的定义均有三种方法,其中以下哪种不是( )
A. 先定义类型,后定义变量
B. 先定义变量,后定义类型
C. 类型和变量同时定义
D. 直接定义变量
11. 关于结构体指针的说法,下列哪个是错误的?( )
A. 结构体指针指向结构体变量的地址
B. 可以通过结构体指针访问和修改结构体成员
C. 结构体指针可以指向任意类型的结构体变量
D. 结构体指针的成员访问操作符是->
12. 下列哪个操作符用于对结构体指针进行解引用?( )
A. &
B. *
C. ->
D. .
13. 下列哪个操作符用于对结构体成员进行取地址?( )
A. &
B. *
C. ->
D. .
14. 下列哪个操作符用于对结构体成员进行间接访问?( )
A. &
B. *
C. ->
D. .
15