第47练 第9章 结构体的定义与使用《C语言程序设计》(电子工业出版社)一课一练

| 2份
| 7页
| 29人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第47练,内容涵盖第9章结构体与联合体的9.1~9.2 结构体的定义与使用。 《C语言程序设计》(电子工业出版社)一课一练 第47练 第9章 结构体与联合体 9.1~9.2 结构体的定义与使用 1、 单项选择题(本题共4小题) 1、下列关于 C 语言结构体类型定义的语法,正确的是( ) A. struct Student {int id; char name [10] } B. struct { int age; char sex; } Person; C. struct Teacher { float salary; char subject; }; D. student struct { int num; float score; }; 2、已知已定义结构体类型struct Student { int id; char name[20]; };,下列结构体变量的定义方式错误的是( ) A. struct Student s1; B. struct Student s2 = {102, "LiSi"}; C. struct Student s3, s4; D. Student s5; 3、已知有嵌套结构体定义: struct Date { int year; int month; int day; }; struct Stu { int id; struct Date birth; }; struct Stu stu1; 下列选项中能正确引用 stu1 出生月份的是( ) A. stu1.month B. birth.month C. stu1.birth.month D. struct stu1.birth.month 4、关于结构体类型和结构体变量的区别,下列描述正确的是( ) A. 结构体类型是数据模板,不分配内存;结构体变量是具体实例,分配内存 B. 结构体变量是一种数据类型模板,不分配内存 C. 结构体类型和结构体变量都会自动分配内存空间 D. 结构体类型定义后会立即分配内存空间 2、 判断题(本题共3题) 1、定义结构体类型后,系统会自动为该类型分配对应的内存空间。( ) 2、结构体成员的名称可以和程序中的普通变量同名,二者不会互相影响。( ) 3、任意两个结构体变量都可以直接进行整体赋值操作。( ) 3、 填空题(本题共2题) 1、在 C 语言中,定义结构体类型必须使用的关键字是____,它是构造结构体类型的标识。 2、已知结构体变量struct Student s = {101, "ZhaoLiu", 89.5};,引用该变量的成绩成员并将其加 5 的语句是____。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Score { int math; int english; }; int main() { struct Score s1 = {90, 85}; struct Score s2 = s1; s2.math = 95; printf("s1: math=%d, english=%d ", s1.math, s1.english); printf("s2: math=%d, english=%d ", s2.math, s2.english); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第47练,内容涵盖第9章结构体与联合体的9.1~9.2 结构体的定义与使用。 《C语言程序设计》(电子工业出版社)一课一练 第47练 第9章 结构体与联合体 9.1~9.2 结构体的定义与使用 1、 单项选择题(本题共4小题) 1、下列关于 C 语言结构体类型定义的语法,正确的是( ) A. struct Student {int id; char name [10] } B. struct { int age; char sex; } Person; C. struct Teacher { float salary; char subject; }; D. student struct { int num; float score; }; 【答案】C 【解析】结构体定义的大括号后必须加分号(A 错误);B 是直接定义变量的方式,但选项描述的是类型定义,且命名不符合规范;结构体定义必须以struct开头,结构体名在struct之后(D 错误),只有 C 的语法完全正确。 2、已知已定义结构体类型struct Student { int id; char name[20]; };,下列结构体变量的定义方式错误的是( ) A. struct Student s1; B. struct Student s2 = {102, "LiSi"}; C. struct Student s3, s4; D. Student s5; 【答案】D 【解析】C 语言中使用自定义结构体类型定义变量时,必须加上struct关键字(除非用typedef重命名),直接写Student s5;不符合语法规则,其他三种定义方式均正确。 3、已知有嵌套结构体定义: struct Date { int year; int month; int day; }; struct Stu { int id; struct Date birth; }; struct Stu stu1; 下列选项中能正确引用 stu1 出生月份的是( ) A. stu1.month B. birth.month C. stu1.birth.month D. struct stu1.birth.month 【答案】C 【解析】嵌套结构体的成员需要逐层引用,先通过stu1.birth访问到嵌套的 Date 结构体变量,再通过.month访问到月份成员,只有 C 的引用方式符合规则。 4、关于结构体类型和结构体变量的区别,下列描述正确的是( ) A. 结构体类型是数据模板,不分配内存;结构体变量是具体实例,分配内存 B. 结构体变量是一种数据类型模板,不分配内存 C. 结构体类型和结构体变量都会自动分配内存空间 D. 结构体类型定义后会立即分配内存空间 【答案】A 【解析】结构体类型只是自定义的数据格式模板,仅规定成员结构,不分配内存;结构体变量是类型的具体实例,定义变量时才会系统分配内存。B、C、D 表述均错误。 2、 判断题(本题共3题) 1、定义结构体类型后,系统会自动为该类型分配对应的内存空间。( ) 【答案】× 【解析】结构体类型仅用于描述数据的组织格式,是一种抽象的模板,不会占用内存;只有定义结构体变量时,系统才会根据类型分配实际的内存空间。 2、结构体成员的名称可以和程序中的普通变量同名,二者不会互相影响。( ) 【答案】√ 【解析】结构体成员的作用域仅限于所属的结构体变量,与普通变量的作用域相互独立,因此同名时不会产生冲突,各自的使用互不影响。 3、任意两个结构体变量都可以直接进行整体赋值操作。( ) 【答案】× 【解析】结构体变量的整体赋值必须满足 “同类型” 的前提,只有两个变量属于完全相同的结构体类型时,才能直接整体赋值,不同类型的结构体变量无法直接赋值。 3、 填空题(本题共2题) 1、在 C 语言中,定义结构体类型必须使用的关键字是____,它是构造结构体类型的标识。 【答案】struct 【解析】struct是 C 语言规定的构造结构体类型的专用关键字,没有它无法完成结构体类型的定义。这是结构体类型区别于基本数据类型的核心标识。 2、已知结构体变量struct Student s = {101, "ZhaoLiu", 89.5};,引用该变量的成绩成员并将其加 5 的语句是____。 【答案】s.score = s.score + 5; 或 s.score += 5; 【解析】结构体成员的引用格式为 “变量名.成员名”,s.score可以像普通 float 变量一样参与运算。该语句通过成员运算符访问成绩成员,完成自增 5 的操作,符合结构体成员的使用规则。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Score { int math; int english; }; int main() { struct Score s1 = {90, 85}; struct Score s2 = s1; s2.math = 95; printf("s1: math=%d, english=%d ", s1.math, s1.english); printf("s2: math=%d, english=%d ", s2.math, s2.english); return 0; } 【答案】 程序运行结果: s1: math=90, english=85 s2: math=95, english=85 【解析】 结构体变量s2 = s1是同类型变量的整体赋值,系统会将s1的所有成员值拷贝到s2的内存空间中,二者是相互独立的实例。修改s2的 math 成员不会影响s1的成员值,因此输出结果中s1的 math 仍为 90,s2的 math 为修改后的 95,english 成员均为 85。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第47练 第9章 结构体的定义与使用《C语言程序设计》(电子工业出版社)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。