第44练 单元9 枚举类型、使用typedef声明新类型《C语言程序设计》(高教版第2版)一课一练
|
2份
|
7页
|
28人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元9的第44练,内容涵盖单元9“学生信息管理系统”的数据存储的9.2.6~9.2.7 枚举类型、使用typedef声明新类型。
《C语言程序设计》(高教版第2版)一课一练 第44练
单元9 “学生信息管理系统”的数据存储
9.2.6~9.2.7 枚举类型、使用typedef声明新类型
1、 单项选择题(本题共5小题)
1、以下枚举类型定义中,枚举元素GREEN的默认值是( )
enum Color{RED, GREEN, BLUE};
A. 0
B. 1
C. 2
D. 3
【答案】B
【解析】枚举元素的默认值从 0 开始依次递增,第一个元素RED为 0,第二个元素GREEN为 1,第三个元素BLUE为 2,因此正确选项为 B。
2、关于枚举变量的赋值操作,下列描述正确的是( )
A. 枚举变量只能直接赋值为定义好的枚举元素
B. 枚举变量本质是整型,可直接赋值任意整数
C. 枚举变量可以通过强制类型转换赋值为整数
D. 枚举变量不能赋值为自定义的枚举元素值
【答案】C
【解析】枚举变量的底层存储为整型,但直接赋值非枚举元素的整数会触发编译器警告,通过强制类型转换可以完成赋值;枚举变量允许直接赋值为定义好的枚举元素,包括自定义值的元素,因此正确选项为 C。
3、C 语言中typedef关键字的核心作用是( )
A. 创建一个全新的数据类型
B. 为已有数据类型指定别名
C. 直接定义变量并分配内存
D. 修改原有数据类型的存储大小
【答案】B
【解析】typedef并非创建新类型,只是为已有类型(如基本类型、枚举、结构体等)起一个简洁的别名,提升代码可读性,因此正确选项为 B。
4、以下枚举类型定义中,枚举元素Wed的值是( )
enum Week{Mon=3, Tue, Wed};
A. 3
B. 4
C. 5
D. 6
【答案】C
【解析】枚举类型中,给指定枚举常量赋值后,后续未赋值的枚举元素会在前一个元素值基础上自动加 1。Mon=3,则 Tue 值为4,Wed 值为5,因此选C。
5、下列定义枚举变量的方式中,语法正确的是( )
A. enum day {Sun, Mon}; day d;
B. enum Day {Sun, Mon}; enum d;
C. enum Day {Sun, Mon} d;
D. enum Sun=0, Mon=1; int d;
【答案】C
【解析】选项 C 属于 “在定义枚举类型的同时定义变量” 的方式,语法正确;选项 A 中需用enum day d;声明变量;选项 B 中enum d;未指定具体枚举类型;选项 D 的枚举定义格式错误,因此正确选项为 C。
2、 判断题(本题共4题)
1、枚举元素是常量,在程序运行期间可以通过赋值语句修改其值,如Sunday=1;。( )
【答案】×
【解析】枚举元素在编译时已被指定为常量,程序运行期间不允许修改其值,否则会触发编译错误。
2、使用typedef为已有类型起别名后,别名和原有类型是完全等价的,并非新类型。( )
【答案】√
【解析】typedef仅为已有类型提供别名,不会创建新的独立类型,别名和原有类型的语法功能完全一致。
3、枚举变量本质是整型变量,因此可以使用printf("%d", today);输出枚举变量对应的数值。( )
【答案】√
【解析】枚举变量的底层存储为整型数据,因此可以用整型格式符%d输出其对应的数值。
4、定义枚举类型时,如果给第一个枚举元素赋值为 5,后续未赋值的枚举元素会从 5 开始依次递增。( )
【答案】√
【解析】枚举类型中,未自定义赋值的元素默认值为前一个元素的值加 1,若第一个元素赋值为 5,后续元素依次为 6、7…… 以此类推。
3、 程序填空题(本题共1题)
1、题目描述:以下程序使用枚举类型表示四季,并用typedef简化枚举类型名,实现输入四季对应的数字,输出对应的季节名称,请补充缺失代码。
#include <stdio.h>
// 定义枚举类型表示四季,并用typedef起别名
(1)____ Season {Spring=1, Summer, Autumn, Winter};
int main() {
// 使用别名定义枚举变量
(2)____ now;
int num;
printf("请输入季节对应的数字(1=春季,2=夏季,3=秋季,4=冬季):");
scanf("%d", &num);
// 将整型数值强制转换为枚举类型赋值
(3)____;
// 根据枚举变量值输出季节名称
switch(now) {
case Spring: printf("春季
"); break;
case Summer: printf("夏季
"); break;
case Autumn: printf("秋季
"); break;
case Winter: printf("冬季
"); break;
default: printf("输入错误!
");
}
return 0;
}
【答案】(1)typedef enum (2)Season (3)now = (Season)num
【解析】
(1)需要同时定义枚举类型并通过typedef起别名,语法格式为typedef enum {元素} 别名;,此处别名是Season,因此填写typedef enum。
(2)使用typedef定义的别名Season声明枚举变量now,符合简化类型名的设计目的,因此填写Season。
(3)枚举变量本质为整型,但直接赋值整数会触发警告,需通过强制类型转换将num转换为Season类型后赋值给now,因此填写now = (Season)num。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元9的第44练,内容涵盖单元9“学生信息管理系统”的数据存储的9.2.6~9.2.7 枚举类型、使用typedef声明新类型。
《C语言程序设计》(高教版第2版)一课一练 第44练
单元9 “学生信息管理系统”的数据存储
9.2.6~9.2.7 枚举类型、使用typedef声明新类型
1、 单项选择题(本题共5小题)
1、以下枚举类型定义中,枚举元素GREEN的默认值是( )
enum Color{RED, GREEN, BLUE};
A. 0
B. 1
C. 2
D. 3
2、关于枚举变量的赋值操作,下列描述正确的是( )
A. 枚举变量只能直接赋值为定义好的枚举元素
B. 枚举变量本质是整型,可直接赋值任意整数
C. 枚举变量可以通过强制类型转换赋值为整数
D. 枚举变量不能赋值为自定义的枚举元素值
3、C 语言中typedef关键字的核心作用是( )
A. 创建一个全新的数据类型
B. 为已有数据类型指定别名
C. 直接定义变量并分配内存
D. 修改原有数据类型的存储大小
4、以下枚举类型定义中,枚举元素Wed的值是( )
enum Week{Mon=3, Tue, Wed};
A. 3
B. 4
C. 5
D. 6
5、下列定义枚举变量的方式中,语法正确的是( )
A. enum day {Sun, Mon}; day d;
B. enum Day {Sun, Mon}; enum d;
C. enum Day {Sun, Mon} d;
D. enum Sun=0, Mon=1; int d;
2、 判断题(本题共4题)
1、枚举元素是常量,在程序运行期间可以通过赋值语句修改其值,如Sunday=1;。( )
2、使用typedef为已有类型起别名后,别名和原有类型是完全等价的,并非新类型。( )
3、枚举变量本质是整型变量,因此可以使用printf("%d", today);输出枚举变量对应的数值。( )
4、定义枚举类型时,如果给第一个枚举元素赋值为 5,后续未赋值的枚举元素会从 5 开始依次递增。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序使用枚举类型表示四季,并用typedef简化枚举类型名,实现输入四季对应的数字,输出对应的季节名称,请补充缺失代码。
#include <stdio.h>
// 定义枚举类型表示四季,并用typedef起别名
(1)____ Season {Spring=1, Summer, Autumn, Winter};
int main() {
// 使用别名定义枚举变量
(2)____ now;
int num;
printf("请输入季节对应的数字(1=春季,2=夏季,3=秋季,4=冬季):");
scanf("%d", &num);
// 将整型数值强制转换为枚举类型赋值
(3)____;
// 根据枚举变量值输出季节名称
switch(now) {
case Spring: printf("春季
"); break;
case Summer: printf("夏季
"); break;
case Autumn: printf("秋季
"); break;
case Winter: printf("冬季
"); break;
default: printf("输入错误!
");
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$