第24练 7.1 概述 + 7.2 定义结构体变量的方法 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

2026-06-25
| 2份
| 9页
| 47人阅读
| 0人下载

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第24练,内容是7.1 概述 + 7.2 定义结构体变量的方法。 《编程语言基础——C语言》(第5版)一课一练 第24练 7.1 概述 + 7.2 定义结构体变量的方法 一、单选题 1. 关于结构体,下列说法正确的是( ) A. 结构体是一种构造数据类型,可以把不同类型的数据组合成一个整体 B. 结构体只能包含同类型的数据成员 C. 结构体变量的成员在内存中是分散存放的 D. 结构体类型名可以和普通变量同名 2. 定义结构体类型时,以下语法格式正确的是( ) A. struct student { int num; char name[20]; } B. struct student { int num; char name[20]; }; C. struct student { int num; char name[20]; }, D. struct student ( int num; char name[20]; ); 3. 已定义结构体类型 struct Student { int num; char name[20]; }; 以下正确定义结构体变量的是( ) A. Student s1; B. struct s1; C. struct Student s1; D. Student struct s1; 4. 以下代码中,可用STU直接定义结构体变量的是( ) A. struct STU { int a; float b; }; B. STU struct { int a; float b; }; C. #define STU struct { int a; float b; } D. typedef struct { int a; float b; } STU; 5. 执行以下代码后变量a的值是:struct { int x; int y; } p = {10, 20}; int a = p.x + p.y;( ) A. 30 B. 10 C. 20 D. 编译错误 6. 定义了结构体 struct Date { int year, month, day; }; 和 struct Student { int num; struct Date birth; }; 则以下正确引用Student类型变量s出生日期的成员year的是( ) A. s.year B. s.birth.year C. s->birth->year D. s.Date.year 7. 以下关于结构体成员的说法中,不正确的是( ) A. 结构体成员的名称可以与程序中的变量名相同,两者代表不同对象 B. 结构体中可以包含另一个已定义的结构体类型作为成员 C. 同一结构体类型中,各成员的类型必须互不相同 D. 结构体成员可以是数组类型 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Student { int num; char name[10]; float score; }; main() { struct Student s = {101, "LiMing", 85.5}; printf("%d,%s,%.1f", s.num, s.name, s.score); } 三、程序填空题 9. 以下程序的功能是:用typedef定义结构体类型别名,然后输入和输出学生信息。请填空。 #include <stdio.h> 【1】 { int num; char name[20]; int age; } Student; main() { Student s; printf("请输入学号、姓名、年龄:"); scanf("%d%s%d", &s.num, s.name, &s.age); printf("学号:%d,姓名:%s,年龄:%d ", s.num, s.name, s.age); } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是定义结构体类型并输出学生三门课程的平均分。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 struct Student L3 { L4 int num; L5 float s1, s2, s3; L6 } L7 main() L8 { L9 Student s = {201, 78, 85, 92}; L10 float avg = (s.s1 + s.s2 + s.s3) / 3; L11 printf("学号:%d,平均分:%.1f ", s.num, avg); L12 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第24练,内容是7.1 概述 + 7.2 定义结构体变量的方法。 《编程语言基础——C语言》(第5版)一课一练 第24练 7.1 概述 + 7.2 定义结构体变量的方法 一、单选题 1. 关于结构体,下列说法正确的是( ) A. 结构体是一种构造数据类型,可以把不同类型的数据组合成一个整体 B. 结构体只能包含同类型的数据成员 C. 结构体变量的成员在内存中是分散存放的 D. 结构体类型名可以和普通变量同名 【答案】A 【解析】结构体(struct)是C语言中的构造数据类型,允许将不同类型的数据项组合成一个逻辑整体。结构体变量在内存中连续存放,类型名在同一作用域内不能与变量同名。 2. 定义结构体类型时,以下语法格式正确的是( ) A. struct student { int num; char name[20]; } B. struct student { int num; char name[20]; }; C. struct student { int num; char name[20]; }, D. struct student ( int num; char name[20]; ); 【答案】B 【解析】结构体类型定义的标准格式:struct 结构体名 { 成员列表 }; 注意最后的分号不可省略。A缺少分号,C多了逗号,D使用了错误的括号。 3. 已定义结构体类型 struct Student { int num; char name[20]; }; 以下正确定义结构体变量的是( ) A. Student s1; B. struct s1; C. struct Student s1; D. Student struct s1; 【答案】C 【解析】先定义结构体类型后,必须用 struct 结构体名 变量名 的格式定义变量。A缺少struct关键字,B缺少结构体名,D语法错误。若使用了typedef则可以直接用类型别名。 4. 以下代码中,可用STU直接定义结构体变量的是( ) A. struct STU { int a; float b; }; B. STU struct { int a; float b; }; C. #define STU struct { int a; float b; } D. typedef struct { int a; float b; } STU; 【答案】D 【解析】typedef可以为结构体类型定义别名,之后可以直接用别名定义变量:STU x; A定义了结构体类型名为STU,定义变量仍需struct STU;B语法反了;C是宏定义而非typedef。 5. 执行以下代码后变量a的值是:struct { int x; int y; } p = {10, 20}; int a = p.x + p.y;( ) A. 30 B. 10 C. 20 D. 编译错误 【答案】A 【解析】在定义结构体类型的同时定义变量p,并用{10,20}初始化p.x=10, p.y=20。通过.运算符访问成员,p.x+p.y=10+20=30。 6. 定义了结构体 struct Date { int year, month, day; }; 和 struct Student { int num; struct Date birth; }; 则以下正确引用Student类型变量s出生日期的成员year的是( ) A. s.year B. s.birth.year C. s->birth->year D. s.Date.year 【答案】B 【解析】结构体可以嵌套,s是Student类型变量,要访问其嵌套的Date类型成员birth中的year,需要逐级用.运算符:s.birth.year。C为指针访问方式,此处s不是指针。 7. 以下关于结构体成员的说法中,不正确的是( ) A. 结构体成员的名称可以与程序中的变量名相同,两者代表不同对象 B. 结构体中可以包含另一个已定义的结构体类型作为成员 C. 同一结构体类型中,各成员的类型必须互不相同 D. 结构体成员可以是数组类型 【答案】C 【解析】结构体成员可以是任意C语言合法类型,多个成员可以为同一类型(如多个int成员)。A正确,成员名与普通变量名不冲突;B正确,结构体可以嵌套;D正确,成员可以是数组。 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Student { int num; char name[10]; float score; }; main() { struct Student s = {101, "LiMing", 85.5}; printf("%d,%s,%.1f", s.num, s.name, s.score); } 【答案】101,LiMing,85.5 【解析】程序定义结构体类型Student,在main中定义变量s并用{101,"LiMing",85.5}初始化。通过.运算符访问各成员并按格式输出,注意name是字符串用%s输出。 三、程序填空题 9. 以下程序的功能是:用typedef定义结构体类型别名,然后输入和输出学生信息。请填空。 #include <stdio.h> 【1】 { int num; char name[20]; int age; } Student; main() { Student s; printf("请输入学号、姓名、年龄:"); scanf("%d%s%d", &s.num, s.name, &s.age); printf("学号:%d,姓名:%s,年龄:%d ", s.num, s.name, s.age); } 【答案】【1】typedef struct 【解析】typedef struct { ... } Student; 定义了一个匿名结构体类型的别名为Student。这样在main中可以直接用 Student s; 定义变量,不需要struct关键字。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是定义结构体类型并输出学生三门课程的平均分。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 struct Student L3 { L4 int num; L5 float s1, s2, s3; L6 } L7 main() L8 { L9 Student s = {201, 78, 85, 92}; L10 float avg = (s.s1 + s.s2 + s.s3) / 3; L11 printf("学号:%d,平均分:%.1f ", s.num, avg); L12 } 【答案】【1】L6: } → 应改为 };(结构体类型定义末尾缺少分号) 【解析】结构体类型定义的右花括号后面必须有分号。L6缺少分号导致后续语法错误。此外L9中直接用Student定义变量也需要补上struct关键字(配合typedef也可),原题要求1处错误,此处假设typedef已生效,单独修复分号问题。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第24练 7.1 概述 + 7.2 定义结构体变量的方法 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
1
第24练 7.1 概述 + 7.2 定义结构体变量的方法 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。