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

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第50练,内容涵盖第9章结构体与联合体的9.5 结构体与函数。 《C语言程序设计》(电子工业出版社)一课一练 第50练 第9章 结构体与联合体 9.5 结构体与函数 1、 单项选择题(本题共4小题) 1、已知结构体struct Stu {int age; char name[20];}; struct Stu stu;,若将stu.age作为实参传递给函数,函数对应的形参应该是( ) A. struct Stu *p B. int a C. char *name D. struct Stu s 2、下列关于结构体指针作函数参数的描述,正确的是( ) A. 传递的是结构体的首地址,开销小、效率高 B. 传递的是结构体变量的副本,函数修改不会影响实参 C. 结构体指针不能作为函数参数使用 D. 必须先将结构体所有成员的值复制给指针才能传递 3、已知结构体struct Score {int math[3];}; struct Score s;,若将s.math作为实参传递给函数,函数的形参写法合法的是( ) A. int arr[3] B. struct Score p C. int num D. char *str 4、关于结构体变量整体作函数参数与结构体指针作参数的区别,下列说法错误的是( ) A. 整体作参数是值传递,形参修改不影响实参 B. 指针作参数是地址传递,形参修改会影响实参 C. 整体作参数的时间和空间开销更大 D. 指针作参数需要复制结构体所有成员的值 2、 判断题(本题共3题) 1、用结构体变量整体作函数参数时,被调用函数中修改形参的成员值,会影响主函数中实参结构体的成员值。( ) 2、结构体指针作函数参数时,传递的是结构体的首地址,无需复制所有成员,能大幅提升程序运行效率。( ) 3、当结构体成员是数组时,将该成员作为实参传递给函数,本质是传递数组的首地址,属于地址传递。( ) 3、 填空题(本题共2题) 1、用指向结构体变量的指针作函数参数时,实参向形参传递的是____,从而避免了结构体成员的逐个复制,降低了开销。 2、用结构体的简单成员(如 int、char 型变量)作函数实参时,属于____传递,被调用函数中对形参的修改不会影响原结构体成员的值。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Student { int id; float score; }; void countFail(struct Student *ps, int n, int *count) { *count = 0; for(int i=0; i<n; i++) { if((ps+i)->score < 60) { (*count)++; } } } int main() { struct Student stu[3] = {{101, 55.0}, {102, 70.0}, {103, 58.0}}; int failCount; countFail(stu, 3, &failCount); printf("不及格人数:%d ", failCount); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第9章的第50练,内容涵盖第9章结构体与联合体的9.5 结构体与函数。 《C语言程序设计》(电子工业出版社)一课一练 第50练 第9章 结构体与联合体 9.5 结构体与函数 1、 单项选择题(本题共4小题) 1、已知结构体struct Stu {int age; char name[20];}; struct Stu stu;,若将stu.age作为实参传递给函数,函数对应的形参应该是( ) A. struct Stu *p B. int a C. char *name D. struct Stu s 【答案】B 【解析】结构体成员stu.age是 int 型简单变量,值传递时形参需为同类型的简单变量,选项 B 符合要求;其他选项类型不匹配,无法接收该成员的值。 2、下列关于结构体指针作函数参数的描述,正确的是( ) A. 传递的是结构体的首地址,开销小、效率高 B. 传递的是结构体变量的副本,函数修改不会影响实参 C. 结构体指针不能作为函数参数使用 D. 必须先将结构体所有成员的值复制给指针才能传递 【答案】A 【解析】结构体指针作参数时,实参传递的是结构体变量或数组的首地址,无需复制所有成员,大幅减少时间和空间开销,效率更高;选项B是结构体整体值传递的特点,选项 C、D 不符合语法规则。 3、已知结构体struct Score {int math[3];}; struct Score s;,若将s.math作为实参传递给函数,函数的形参写法合法的是( ) A. int arr[3] B. struct Score p C. int num D. char *str 【答案】A 【解析】s.math是 int 型数组名,传递的是数组首地址,形参需为同类型的数组名或指针变量,选项 A 的int arr[3]符合要求;其他选项类型不匹配,无法接收数组地址。 4、关于结构体变量整体作函数参数与结构体指针作参数的区别,下列说法错误的是( ) A. 整体作参数是值传递,形参修改不影响实参 B. 指针作参数是地址传递,形参修改会影响实参 C. 整体作参数的时间和空间开销更大 D. 指针作参数需要复制结构体所有成员的值 【答案】D 【解析】指针作参数传递的是地址,无需复制结构体成员,开销小;选项 D 描述的是结构体整体值传递的特点,并非指针传参的特性,因此错误。 2、 判断题(本题共3题) 1、用结构体变量整体作函数参数时,被调用函数中修改形参的成员值,会影响主函数中实参结构体的成员值。( ) 【答案】× 【解析】结构体变量整体作参数属于值传递,形参是实参的副本,修改形参不会影响原实参的成员值,因此该表述错误。 2、结构体指针作函数参数时,传递的是结构体的首地址,无需复制所有成员,能大幅提升程序运行效率。( ) 【答案】√ 【解析】地址传递仅传递一个内存地址,避免了结构体成员的逐个复制,减少了时间和空间开销,程序效率更高,符合指针传参的优势。 3、当结构体成员是数组时,将该成员作为实参传递给函数,本质是传递数组的首地址,属于地址传递。( ) 【答案】√ 【解析】数组名作为实参时,传递的是数组的首地址,因此结构体的数组成员作参数时,同样属于地址传递,函数中修改数组元素会影响原结构体的数组成员。 3、 填空题(本题共2题) 1、用指向结构体变量的指针作函数参数时,实参向形参传递的是____,从而避免了结构体成员的逐个复制,降低了开销。 【答案】结构体变量的首地址 【解析】地址传递只需传递一个内存地址值,无需复制结构体的所有成员,能有效减少时间和空间消耗。这种传递方式是结构体与函数结合时的最优选择,适合处理大型结构体数据。 2、用结构体的简单成员(如 int、char 型变量)作函数实参时,属于____传递,被调用函数中对形参的修改不会影响原结构体成员的值。 【答案】值 【解析】值传递时,形参是实参的副本,两者占用不同的内存空间。函数中修改形参仅改变副本的值,不会影响原实参(即结构体成员)的原始值,符合值传递的特性。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> struct Student { int id; float score; }; void countFail(struct Student *ps, int n, int *count) { *count = 0; for(int i=0; i<n; i++) { if((ps+i)->score < 60) { (*count)++; } } } int main() { struct Student stu[3] = {{101, 55.0}, {102, 70.0}, {103, 58.0}}; int failCount; countFail(stu, 3, &failCount); printf("不及格人数:%d ", failCount); return 0; } 【答案】 程序运行结果: 不及格人数:2 【解析】 实参stu传递结构体数组的首地址给形参指针ps,函数通过(ps+i)遍历数组中的每个学生。判断学生成绩是否小于 60,统计不及格人数并通过指针count返回给主函数,最终输出统计结果。由于是地址传递,函数能直接访问原数组的成员并完成统计。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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

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