第5章函数习题与答案_中学教育-中考.pdf
《第5章函数习题与答案_中学教育-中考.pdf》由会员分享,可在线阅读,更多相关《第5章函数习题与答案_中学教育-中考.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料 欢迎下载 第 5 章函数 习题及解答 一选择题。1.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 答案:D 解析:本题综合考查函数的调用方式。函数的形参和实参具有以下特点:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,
2、以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。2.有以下程序 int fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf(%d n,fun(int)fun(a+c,b),a-c);程序运行后的输出结果是 A)编译出错 B)9 C)21 D)9.0 答案:B 解析:本题考查函数的
3、综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将 a转换成 double 类型;(int)(x+y)是将 x+y 的值转换成整型。本题可按部就班地逐步运算:fun(int)fun(a+c,b),a-c)fun(int)fun(10,5),2-8)精品资料 欢迎下载 fun(int)15.000000,-6)fun(15,-6)9 3.若有以下调用语句,则不正确的 fun 函数的首部是 main()int a 50,n;fun(n,&a 9);A)void fun(int m,int x)B)void fun(int s,int h 41)
4、C)void fun(int p,int*s)D)void fun(int n,int a)答案:D 解析:函数定义的一般形式为:类型说明符 函数名()类型说明 语句 根据 fun 函数的调用语句可知,fun 函数的第二个参数是一个地址值。4.以下说法正确的是 A)C语言程序总是从第一个的函数开始执行 B)在 C语言程序中,要调用函数必须在 main()函数中定义 C)C语言程序总是从 main()函数开始执行 D)C 语言程序中的 main()函数必须放在程序的开始部分 答案:C 解析:C 语言的程序是由主函数 main()开始运行,由主函数来调用其他函数,所以,选项 A)错误。C 语言中定
5、义的函数必须是并列的,不能在一个函数中定义其他函数,选项 B)错。函数必须先定义后使用,在调用函数以前要定义函数,而 main()函数不必放在最前面,故选项 D)错。5.以下程序中函数 sort 的功能是对 a数组中的数据进行由大到小的排序 void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(a i a j)t=a i;a i=a j;a j=t;是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参
6、具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知识首先我们可以利用强制转换类型转换运算符将一精品资料 欢迎下载 main()int aa 10=1,2,3,4,5,6,7,8,9,10,i;sort(&aa 3,5);for(i=0;i10;i+)p
7、rintf(%d,aa i);printf(n);程序运行后的输出结果是 A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,答案:C 解析:C 语言中,实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参也要遵循这一规则,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。6.在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是 A)地址传递 B)单向值传递 C)由实参传形参,再由形参传实参 D)传递方式由
8、用户指定 答案:B 解析:如果实参是简单变量,它与对应形参之间的数据传递方式是由实参传给形参,而形参值的改变不能改变实参的值。7.以下叙述中正确的是 A)构成 C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)所有被调用的函数一定要在调用之前进行定义 答案:A 解析:本题综合考查 C语言的概念部分,关于 C语言,我们应该了解以下必须要掌握的基础知识:C程序是由函数构成的。一个函数由两部分组成:函数的首部和函数体。一个 C程序总是从 main函数开始执行的,而不论 main函数的整个程序中的位置如何(main函数可以放在程序最开始,也可以放
9、在程序最后,或写在一些函数之前,在另一些函数之后)。C 程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的
10、值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知识首先我们可以利用强制转换类型转换运算符将一精品资料 欢迎下载 8.若有函数内部说明:int a 3 4;则数组 a中各元素 A)可在程序的运行阶段得到初值 0 B)可在程序的编译阶段得到初值 0 C)不能得到确定的初值 D)可在程序的编译或运行阶段得到初值 0 答案:C 解析:我们可以把二维数组的常量表达式看做是矩阵或者表格的行数与列数,要注意每个元素有两个下标,第一个是方括号中的下标代表行号,称行下标;第二个是方括号中的下标代表列号。行下标和列下标总
11、是从 0 开始的,二维数组在不赋初值时,不能得到确定。9.有以下函数 char fun(char*p)return p;该函数的返回值是 A)无确切的值 B)形参 p中存放的地址值 C)一个临时存储单元的地址 D)形参 p 自身的地址值 答案:B 解析:本题考查函数返回值的知识。函数返回值是通过函数中的 return 语句获得,return 语句中的表达式的值就是所求函数的值。此表达式的值必须与函数首部所说明的类型一致。若类型不一致,则以函数值的类型为准,由系统进行转换。10.以下正确的说法是 A)定义函数时,形参的类型说明可以放在函数体内 B)return 后边的值不能为表达式 C)如果函数
12、值的类型与返回值类型不一致,以函数值类型为准 D)如果形参与实参类型不一致,以实参类型为准 答案:C 解析:选项 A)中定义函数时,形参的类型说明应该放在形参表列内说明。老版本C 语言中,对形参类型的声明是放在函数定义的第 2 行,也就是不在第 1 行的括号内指定形参的类型,而在括号外单独指定。选项 B)中 return 后面的值可以是一个表达式。选项 D)中实参与形参的类型应相同或赋值兼容。如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,以形参类型为准。11.有以下程序 int f(int n)if(n=1)return 1;else return f(n-1)+1
13、;main()int i,j=0;是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知
14、识首先我们可以利用强制转换类型转换运算符将一精品资料 欢迎下载 for(i=1;i3;i+)j+=f(i);printf(%d n,j);程序运行后的输出结果是 A)4 B)3 C)2 D)1 答案:B 解析:在 main函数中,对 f(1)和 f(2)的值进行了累加。f(1)=1 f(2)=f(1)+1=2 最后,j 的值为 1+2=3 12.在 C语言中,变量的隐含存储类别是 A)auto B)static C)extern D)无存储类别 答案:A 解析:auto 变量:无 static 声明的局部变量。用 auto 作存储类别的声明时,可以不写 auto,存储类别隐含确定为 auto(
15、自动存储类别)。是动态存储方式。大多数变量是自动变量。用 static 声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用 extern 声明外部变量,外部变量即全局变量,可以用 extern 声明来改变全局变量的作用域,实际上,关键字“auto”可以省略,auto 不写则隐含确定为“自动存储类别”,它属于动态存储方式。13.若有以下程序#include void f(int n);main()void f(int n);f(5);void f(int n)printf(%d n,n);则以下叙述中不正确的是
16、A)若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 f B)若在主函数前对函数 f 进行说明,则在主函数和其后的其他函数中都可以正确调用函数 f C)对于以上程序,编译时系统会提示出错信息:提示对 f 函数重复说明 是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法
17、使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知识首先我们可以利用强制转换类型转换运算符将一精品资料 欢迎下载 D)函数 f 无返回值,所以可用 void 将其类型定义为无返回值型 答案:C 解析:C 语言规定,一个函数中调用另一个函数(即被调用函数)需要具备的条件有:首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。如果使用库函数,一般还应该在本文件开头用#include 命令将函数调用有关库函数时所需要到的信息“包含”到
18、本文件中来。如果使用自定义函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数作声明,即向编译系统声明将要调用此函数,并将有关信息通知编译系统。在 C语言中,可以使用函数原型进行声明,函数原型的一般形式为:函数类型 函数名(参数类型 1,参数类型 2)或函数类型 函数名(参数类型 1 参数名 1,参数类型 2 参数名 2)14.有如下程序 long fib(int n)if(n2)return(fib(n-1)+fib(n-2);else return(2);void main()printf(“%dn”,fib(3);该程序的输出结果是 A)2 B)4 C)6
19、D)8 答案:B 15.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是 A)3 B)4 C)5 D)有语法错 答案:A 16.C 语言允许函数值类型缺省定义,此时该函数隐含的类型是 _。A)float 型 B)int 型 C)long 型 D)double 型 答案:B 17.以下存储类型只有在使用时才为该类型变量分配内存的是 _。A)auto 和 static B)auto 和 register C)register 和 static D)static 和extern 答案:B 18.设有以下函数:fun(int x)是
20、函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知识首先我们可以利用强制转换类型转换运
21、算符将一精品资料 欢迎下载 int y=0;static int z=2;y+;z+;return(x+y+z);若在下面主程序中调用该函数,则输出结果是 _。main()int x=3,k;for(k=1;k=3;k+)printf(%dn,fun(x);A)7 B)7 C)7 D)7 8 9 10 7 9 11 13 7 答案:A 19.运行下面程序:int ff(int n)static int f=1;f=f*n;return f;main()int k;for(k=1;k4;k+)printf(%dn,ff(k);则输出结果是 _。A)1 B)1 C)1 D)1 2 2 2 2 6
22、6 3 3 24 4 答案:B 20.以下程序有语法性的错误,有关错误原因的正确说法是 _。main()int G,k;是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而
23、实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考查函数的综合知识首先我们可以利用强制转换类型转换运算符将一精品资料 欢迎下载 void prt_char(int);.k=prt_charf(G).A)语句 void prt_char();有错,它是函数调用语句,不能用 void 说明 B)变量名不能用大写字母 C)函数说明和函数调用语句之间有矛盾;D)函数名不能使用下划线。答案:C 二填空题。1.设在主函数中有以下定义和函数调用语句,且 fun 函数为 void 类型;请写出 fun 函数的首部【1】。要求形参名为 b。main()double s 10 22;int
24、n;fun(s);答案:【1】void fun(double s22)解析:本题中,为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空类型”)。这系统就保证不使函数带回任何值,二维数组的第一维可以省略。2.阅读下面程序,则程序执行后的结果为【2】。#include stdio.h main()int a=4,b=6,c=7;float d,fun(int,int,int);d=fun(a,b,c);printf(%fn,d);float fun(int a,int b,int c)double s;s=a%b*c;return s;答案:【2】28.000000 3.当调用函
25、数时,实参是一个数组名,则向函数传递的是【3】。是函数调用可以作为独立的语句存在函数调用可以作为一个函数的实参函数调用可以出现在表达式中函数调用可以作为一个函数的形参答案解析本题综合考查函数的调用方式函数的形参和实参具有以下特点形参变量只有在被调用时 数后则不能再使用该形参变量实参可以是常量变量表达式函数等无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值以便把这值传送给形参因此应预先用赋值输入等办法使实参获得确定值实参和形参在数量上类型上 参而不能把形参的值反向地传送给实参因此在函数调用过程中形参的值发生改变而实参中的值不会变化有以下程序程序运行后的输出结果是编译出错答案解析本题考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 习题 答案 中学 教育 中考
限制150内