- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 函数与指针、数组关系
一、选择题
1.【D 】
分析:此题是一个简单的函数调用。func的功能是返回两个数之和,x为2,y为5,z为8,它们作为实参传给函数的形参,所以func(func(x,y),z)等价于func(func(2,5),8) 等价于func(7,8)为15。所以答案选D。2.【D 】
分析:int *f()中的f是一个返回值为指针型的函数名。它于另一种形式要区别,int (*f)()这里的f是一个指向函数的指针,大家后面会学到。3.【B 】
分析:数组名就是数组的首地址。4.【B 】
分析:从函数的定义可以看出,返回值被定义为整型了。5.【B 】
分析:B选项的函数首部int max(int x,y)第二个形参没有类型说明符。形参的类型说明符一定不能省。6.【D 】
分析:从函数的首部int fun(double x[10],int *n)第一个形参是double型指针类型,第二个形参是int型指针类型,函数声明时,形参的类型一定要与定义的相同,所以答案选D。7.【A 】
分析:注意函数定义的形参类型。函数调用时,将变量a的地址和数组b的首地址传给形参a,b。那么在函数体中,b[0]=*a+6等价于b[0]=0+6,为6。所以答案选A。8.【B】
分析:此题涉及都后面的内容,请学有余力的同学自己完成。注意b是全局变量。9.【D】
分析:从函数的调用看出,第一个实参是整数,第二个实参是地址。形参与实参要类型,个数,位置一一对应。所以选D。10.【B】
分析:根据题目findmax函数返回数组中的最大值,p和s的初值都是数组x的首地址,if语句就是用来比较数组中两个数的大小,n是控制循环的次数,p++大家可以想到p指针会从首地址开始移动依次访问到数组的每个元素,然后将每次比较的较大数的指针存放到s中,最终返回最大的值。所以填入*p*s比较数组中两个数的大小。11.【A】
分析:从函数调用f(a,3,7)可以看出,数组首地址a,整数3,整数7,分别传到形参b、m、n中。那么for(i=m;in;i=i+2) s=s+b[i]等价于for(i=3;i7;i=i+2) s=s+a[i]执行完这个for循环将a[3] 和a[5]累加到s。所以返回值为10。x被赋为10。12.【A】
分析:此题注意a,b是全局变量。13.【C】
分析:从函数调用swap(s1,s2)看出将两个字符串的首地址传给形参,所以只交换了字符串的第一字符。14.【A】
分析:
a[0] 1 a[1] 2 a→ a[2] 3 a[3] 4 a[4] 5 a[5] 6 a[6] 7 a[7] 8 a[8] 9 a[9] 10 主函数中将数组元素a[2]的地址作为实参传递给对应的形参指针变量a,那么sum函数中的指针变量a指向了主函数中的a[2]这个存储单元(如图所示)。在sum函数中,将a[-1]与a[1]求和(即主函数中的a[1]和a[3]求和),并将和值赋给p[0],即主函数中的a[2]这个存储单元。因此,主函数中a[2]的值变为6。当sum函数调用完成,程序的流程回到主函数中。主函数最后输出a[2]的值,结果应为6。本题答案选A。
15.【D】
分析:函数swap1和swap2都是实现两个数互换的功能。16.【A】
分析:f1的功能是选出较大的数,f2的功能是选出较小的数。17.【D】
分析:此题分析过程比较复杂,请大家上课认真听老师分析。大体思路是我们必须清楚实参传给形参的是什么,然后分析函数体,看看函数的功能,就能顺利完成题目。18.【C】
分析:同11题。19.【B】
分析:此题分析过程比较复杂,请大家上课认真听老师分析。大体思路是我们必须清楚实参传给形参的是什么,然后分析函数体,看看函数的功能,就能顺利完成题目。
20.【C】
分析:函数fun是递归调用,实现了a[0]和a[3]的互换,a[1]和a[2]的互换。
21.【B】
分析:请将此题和15题做比较,体会一下传值和传地址的区别。22.【D】
分析:此题分析过程比较复杂,请大家上课认真听老师分析。大体思路是我们必须清楚实参传给形参的是什么,然后分析函数体,看看函数的功能,就能顺利完成题目。23.【B】
分析:此题就是要注意a是全局变量。24.【A】
分析:主函数中y的地址传到fun函数中的形参x,主函数中x的地址传到fun函数的形参y中。所以fun函数中的*x, *y就是主函数中的y,x。25.【B】
分析:实参是地址,但是在函数体中并没有通过地址访问内存单元,所以a,b没有改变。26.【C】
分析:此题分析过程比较复杂,请大家上课认真听老师分析。大体思路是我们必须清楚实参传给形参的是什么,然后分析函数体,看看函数的功能,就能顺利完成题目。27.【
文档评论(0)