第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 循环遍历数组,累加所有学生的数学成绩得到总分。随后计算平均分,按格式输出结果,整个过程遵循结构体数组的引用规则,实现了批量数据的统计计算。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$