第48练 第9章 结构体数组《C语言程序设计》(电子工业出版社)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第48练,内容涵盖第9章结构体与联合体的9.3 结构体数组。 《C语言程序设计》(电子工业出版社)一课一练 第48练 第9章 结构体与联合体 9.3 结构体数组 1、 单项选择题(本题共4小题) 1、已知struct Student {char name[10]; int score;}; struct Student stu[3];,下列访问数组第 2 个元素成绩的方式正确的是( ) A. stu.score[1] B. stu[1].score C. stu->score[1] D. stu[1]->score 2、下列对结构体数组初始化的语句中,符合规范的是( ) A. struct Person {int age; char sex;}; struct Person p[2] = {18,'M',20,'F'}; B. struct Person {int age; char sex;}; struct Person p[2] = {{18,'M'}, {20,'F'}}; C. struct Person {int age; char sex;}; struct Person p[] = {18,'M',20,'F'}; D. struct Person {int age; char sex;}; struct Person p[2] = {[0].age=18, [1].sex='F'}; 3、关于结构体数组的内存特性,下列描述正确的是( ) A. 结构体数组的所有元素在内存中是连续存储的 B. 数组中每个结构体元素占用的内存空间不固定 C. 结构体数组元素之间的内存间隔由编译器随机决定 D. 结构体数组的首地址是数组最后一个元素的地址 4、要遍历一个包含 5 个元素的结构体数组stu,统计成绩大于 60 的人数,下列 for 循环写法正确的是( ) A. for(int i=0; i<=5; i++) {if(stu[i].score>60) count++;} B. for(int i=1; i<=5; i++) {if(stu[i].score>60) count++;} C. for(int i=0; i<5; i++) {if(stu[i].score>60) count++;} D. for(int i=1; i<5; i++) {if(stu[i].score>60) count++;} 2、 判断题(本题共3题) 1、结构体数组元素的成员引用格式为 “结构体数组名。下标。成员名”。( ) 2、初始化结构体数组时,每个元素的初值表列必须包含在单独的大括号{}中。( ) 3、结构体数组的各个元素在内存中是分散存储的,彼此之间没有固定的内存间隔。( ) 3、 填空题(本题共2题) 1、访问结构体数组中第 i 个元素的某个成员时,正确的格式为____。 2、结构体数组初始化的一般形式为:结构体类型 数组名 [常量表达式] = ____。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Score { char id[5]; float math; }; int main() { struct Score s[3] = {{"001", 85.0}, {"002", 59.5}, {"003", 72.0}}; float sum = 0.0; for(int i=0; i<3; i++) { sum += s[i].math; } printf("总分:%.1f 平均分:%.1f", sum, sum/3); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第48练,内容涵盖第9章结构体与联合体的9.3 结构体数组。 《C语言程序设计》(电子工业出版社)一课一练 第48练 第9章 结构体与联合体 9.3 结构体数组 1、 单项选择题(本题共4小题) 1、已知struct Student {char name[10]; int score;}; struct Student stu[3];,下列访问数组第 2 个元素成绩的方式正确的是( ) A. stu.score[1] B. stu[1].score C. stu->score[1] D. stu[1]->score 【答案】B 【解析】结构体数组的引用格式为 “结构数组名 [下标]. 成员名”,下标从 0 开始,第 2 个元素对应下标 1,因此stu[1].score是正确的访问方式;选项 A 顺序错误,选项 C、D 使用了指针访问符号->,仅适用于结构体指针,不适用于普通数组元素。 2、下列对结构体数组初始化的语句中,符合规范的是( ) A. struct Person {int age; char sex;}; struct Person p[2] = {18,'M',20,'F'}; B. struct Person {int age; char sex;}; struct Person p[2] = {{18,'M'}, {20,'F'}}; C. struct Person {int age; char sex;}; struct Person p[] = {18,'M',20,'F'}; D. struct Person {int age; char sex;}; struct Person p[2] = {[0].age=18, [1].sex='F'}; 【答案】B 【解析】结构体数组的每个元素是结构体变量,初始化时每个元素的初值需用单独的{}包裹,选项 B 符合该规范;选项 A 未给每个元素加{},容易导致成员匹配错误;选项 C 同样未按元素分组初始化;选项 D 是指定成员初始化,中职阶段暂不要求,且未完整初始化元素,不符合基础规范。 3、关于结构体数组的内存特性,下列描述正确的是( ) A. 结构体数组的所有元素在内存中是连续存储的 B. 数组中每个结构体元素占用的内存空间不固定 C. 结构体数组元素之间的内存间隔由编译器随机决定 D. 结构体数组的首地址是数组最后一个元素的地址 【答案】A 【解析】结构体数组是同类型结构体变量的集合,在内存中占用一片连续的存储单元,每个元素的内存大小由结构体成员的总字节数决定,因此选项A 正确;其他选项均不符合结构体数组的内存分布规则。 4、要遍历一个包含 5 个元素的结构体数组stu,统计成绩大于 60 的人数,下列 for 循环写法正确的是( ) A. for(int i=0; i<=5; i++) {if(stu[i].score>60) count++;} B. for(int i=1; i<=5; i++) {if(stu[i].score>60) count++;} C. for(int i=0; i<5; i++) {if(stu[i].score>60) count++;} D. for(int i=1; i<5; i++) {if(stu[i].score>60) count++;} 【答案】C 【解析】数组下标从 0 开始,5 个元素的下标范围是 0~4,因此循环条件应为i<5;选项 A 的i<=5会访问下标 5 的越界元素,选项 B、D 的起始下标错误,只有选项 C 符合数组遍历的规则。 2、 判断题(本题共3题) 1、结构体数组元素的成员引用格式为 “结构体数组名。下标。成员名”。( ) 【答案】× 【解析】正确的引用格式是 “结构体数组名 [下标]. 成员名”,下标需要放在方括号中,而非用点号连接数组名和下标,因此该表述错误。 2、初始化结构体数组时,每个元素的初值表列必须包含在单独的大括号{}中。( ) 【答案】√ 【解析】结构体数组的每个元素是结构体变量,初始化时用大括号包裹每个元素的初值,能明确区分不同元素的成员赋值,符合结构体数组的初始化规范。 3、结构体数组的各个元素在内存中是分散存储的,彼此之间没有固定的内存间隔。( ) 【答案】× 【解析】结构体数组是同类型变量的集合,在内存中占用连续的存储单元,元素之间的间隔由结构体的字节大小决定,并非分散存储,因此该表述错误。 3、 填空题(本题共2题) 1、访问结构体数组中第 i 个元素的某个成员时,正确的格式为____。 【答案】结构体数组名 [i]. 成员名 【解析】该格式遵循 C 语言结构体数组的引用规则,下标[i]指定数组中的具体元素,点号.用于访问结构体元素的成员,是结构体数组成员访问的标准方式。这个格式能准确定位到数组中某元素的指定成员,便于对结构体数组进行读写操作。 2、结构体数组初始化的一般形式为:结构体类型 数组名 [常量表达式] = ____。 【答案】{初值表列} 【解析】大括号中的初值表列需按结构体成员顺序赋值,且每个数组元素的初值需用单独的内存大括号包裹,确保初始化的准确性。这种初始化形式能一次性完成结构体数组所有元素的成员赋值,符合批量数据初始化的需求。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Score { char id[5]; float math; }; int main() { struct Score s[3] = {{"001", 85.0}, {"002", 59.5}, {"003", 72.0}}; float sum = 0.0; for(int i=0; i<3; i++) { sum += s[i].math; } printf("总分:%.1f 平均分:%.1f", sum, sum/3); return 0; } 【答案】 程序运行结果: 总分:216.5 平均分:72.2 【解析】 程序定义了存储学号和数学成绩的结构体数组,通过 for 循环遍历数组,累加所有学生的数学成绩得到总分。随后计算平均分,按格式输出结果,整个过程遵循结构体数组的引用规则,实现了批量数据的统计计算。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第48练 第9章 结构体数组《C语言程序设计》(电子工业出版社)一课一练-第1页
1

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