ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:34.12KB ,
资源ID:10148375      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10148375.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第5章 函数.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第5章 函数.docx

1、第5章 函数第5章 函数5.1知识要点1 1 掌握C+中函数的定义、调用以及主调函数和被调函数之间的数据传递规则。2 2 掌握函数的返回值和它的类型。3 3 理解函数递归调用的过程,掌握简单的递归算法。4 4 掌握内联函数的概念和应用。5 5 理解函数重载的概念和使用场合。6 6 理解宏的概念,掌握定义无参宏和带参宏的方法。7 7 了解文件包含和条件编译。5.2典型例题分析与解答例题 1:关于函数的调用下面不正确的是( )。A A 由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行B B 函数的调用可以在任意函数之间进行,只要有需要C C 一个函数可以自己调用自己D D 函

2、数返回时可以不必带返回值,这时函数在定义时其类型应用void表示答案:A分析:因为在C+中程序从主函数开始是正确的,但并未规定函数的调用只能发生在主函数和其他函数之间。例题 2:关于函数的声明和定义正确的是( )。A A 函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确B B 函数的定义和声明可以合二为一,可以只有函数定义即可C C 函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略D D 函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义答案:C分析:函数的声明并非必须,

3、可以只要函数定义而不要声明,但要注意符合一定条件,函数不可嵌套定义。例题 3:在函数的返回值类型与返回值表达式的类型的描述中,错误的是( )。A A 函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的B B 函数返回值的类型就是返回值表达式的类型C C 函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型D D 函数返回值类型决定了返回值表达式的类型答案:B分析:因为函数的返回值类型与返回值表达式的类型可能不同,在不同时将返回值表达式类型自动转换为函数返回值的类型。例题 4:下面程序的输出结果为( )。#include”iostream.h”f(int a)int

4、 b=0; static int c=3; b+;c+; return(a+b+c);void main( )int a=2,I; for(I=0;I3;I+) coutf(a)=a)&(ch=A)&(ch=Z) I=2;else I=3;return I;void main( ) int I; coutch; I=fun(ch); If(I=1) cout”是小写字母!”endl; else if(I=2) cout”是大写字母!”endl; else cout”是其他字符!”endl;例题 6:使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和浮点型数的两点间距离。分析:本题

5、要求我们理解函数重载,另外两点间距离公式为:d=sqrt(x1-x2)2+(y1-y2)2),程序代码如下:#include”iostream.h”#include”math.h”double func(int,int,int,int),func(double,double,double,double);void main( ) coutfunc(2,2,5,5)”,”; coutfunc(2.2,2.2,5.5,5.5)endl;double func(int x1,int y1,int x2,int y2)return sqrt(x1-x2)* (x1-x2)+(y1-y2)*(y1-y2

6、);double func(double x1,double y1,double x2,double y2)return sqrt(x1-x2)* (x1-x2)+(y1-y2)*(y1-y2);5.3教材习题分析与解答1选择题(1)以下正确的说法是()。A用户若需要调用标准函数,调用前必须重新定义B用户可以直接调用所有标准库函数 C用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数答案:D(2)如果一个函数无返回值,定义时它的函数类型应是()。A任意 Bint Cvoid D无答案:C(3)关于函数返

7、回值的的描述正确的是( )。A函数返回表达式的类型一定与函数的类型相同B函数返回值的类型决定了返回值表达式的类型C当函数类型与返回值表达式类型不同,将对返回值表达式的值进行类型转换D函数返回值类型就是返回值表达式类型答案:C(4)下列哪个不是重载函数在调用时选择的依据( )。A参数类型 B参数个数 C函数类型 D函数名答案:C(5)在参数传递过程中,对形参和实参的要求是()。A函数定义时,形参一直占用存储空间 B实参可以是常量、变量或表达式C形参可以是常量、变量或表达式 D形参和实参类型和个数都可以不同答案:B(6)下列各类变量,哪个不是局部变量()。Aregister型变量 B外部stati

8、c变量Cauto型变量 D函数形参答案:B(7)在C+语言中,关于参数默认值的描述正确的是()。A只能在函数定义时设置参数默认值B设置参数默认值时,应当从右向左设置C设置参数默认值时,应当全部设置D设置参数默认值后,调用函数不能再对参数赋值答案:B(8)对于一个功能不太复杂,并且要求加快执行速度,选用(A)合适。A内联函数 B重载函数 C递归调用 D嵌套调用答案:A(9)预处理命令以( )开头。A * B # C / D :答案:B(10)对数组名作函数的参数,下面描述正确的是(B)。A数组名作函数的参数,调用时将实参数组复制给形参数组B数组名作函数的参数,主调函数和被调函数共用一段存储单元C

9、数组名作参数时,形参定义的数组长度不能省略D数组名作参数,不能改变主调函数中的数据答案:B2分析程序并写出结果(1)#include void fun( );int n=5;void main( ) int n=10; coutnendl; fun();void fun( ) coutnendl; 运行结果:105(2)#include void fun( );void main( ) int i; for(i=0;i5;i+) fun();void fun( ) static int m=0; coutm+endl;运行结果:01234(3)#include #include void fu

10、n(int array ,int n);void main( ) int a10=5,8; int i; fun(a,10); for(i=0;i10;i+) coutsetw(4)ai; coutendl;void fun(int array ,int n)int i; for(i=2;in;i+) arrayi=arrayi-1+arrayi-2;运行结果:5 8 13 21 34 55 89 144 233 377(4) #include #define M 20#define N 10#define L(r) r*rvoid main( ) coutL(M)endl; coutL(N+

11、N)endl;运行结果:400120(5)#include int add(int x,int y=8);void main( ) int a=4; coutadd(a)endl; coutadd(a,add(a)endl; int add(int x,int y)return x+y; 运行结果:1216(6)#include int fun(double a,double b);void main( ) coutfun(2.5,3.5)endl; int fun(double a,double b)return a*b; 运行结果:8(7)#include #include void fu

12、n(char string );void main( )char str20=this is a book; coutstrendl; fun(str); coutstrendl;void fun(char string )int i; for(i=0;i=a & stringi=z) stringi-=32; 运行结果:this is a book.THIS IS A BOOK. 3编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。#includefloat fun(float f)float c; c=5.0/9*(f-32); /注意这里是5.0/9,不

13、能写成5/9 return c;void main() float x; coutx; cout转换值为 fun(x)endl;4分别利用非递归和递归的方法编写函数求斐波那契数列第n项。分析:斐波那契数列具有这样的特点,数列的第一项和第二项都等于1,从第三项开始每项的数值都等于它前面两项之和。非递归:#includefloat feb(int n0,int n1) return n0+n1;void main()int a=1,b=1,c,i; coutatbt;for(i=3;i=20;i+)c=feb(a,b);coutct; if(i%5=0) coutendl; a=b;b=c;递归:

14、#includefloat feb(int n) if(n=0 ) return 1; else if(n=1) return 1; else return feb(n-1)+feb(n-2);void main() for(int i=0;i20;i+) coutfeb(i)t; if(i%5=4) coutendl; 5编写函数将字符串按逆序存放。#include#include#includevoid main() int i,n; char s100,temp; coutinput string:endl; gets(s); n=strlen(s); for(i=0;in/2;i+)

15、temp=si;si=sn-i-1; sn-i-1=temp; coutNow,string:endl; puts(s);6编写函数实现字符串拷贝功能。#include#includevoid main() char s180,s280; int i; coutInput s2:s2; for(i=0;i=strlen(s2);i+) s1i=s2i; couts1:s1endl;7编写函数利用数组名作参数计算数组arr34所有元素的和。#includeint sum(int a4,int n,int m) int p=0,i,j; for(i=0;in;i+) for(j=0;jm;j+)

16、p+=aij; return p; void main() int b34=1,2,3,4,5,6,7,8,9,10,11,12; coutsum(b,3,4)endl;8编写函数利用递归的方法计算x的n阶勒让德多项式的值。该公式如下:#includevoid main() int x,n; float p(int,int); coutinput n & x:n; cinx; coutn xendl; coutpn(x)=:p(n,x);float p(int n,int x) if(n=0) return(1); else if(n=1) return(x); else return(2*n

17、-1)*x*p(n-1),x)-(n-1)*p(n-2),x)/n);9利用重载编写求整数绝对值和求实数绝对值两个函数。#includefloat fabnum(float num1) float num; if(num1=1e-6) num=num1; else num=-num1; return num;int fabnum(int num2) int num; if(num2=0) num=num2; else num=-num2; return num;void main() float num1; int num2; coutPlease input a float number:n

18、um1; coutAbsolute Value is:fabnum(num1)endl; coutPlease input a int number:num2; coutAbsolute Value is:fabnum(num2)endl;10利用全局变量并编写函数统计数组中奇数和偶数的个数。#include#includeint oddnum=0,evennum=0;void main() int n,i,a100; coutEnter n:n; coutinput array a:endl; for(i=0;iai; coutArray a is:endl; for(i=0;in;i+)

19、coutsetw(4)ai; coutendl; for(i=0;in;i+) if(ai%2=0) oddnum+; else evennum+; coutThe number of even is:evennumendl; coutThe number of odd is:oddnumendl;5.4补充习题1 1 空题:(1)C+语言程序由 构成,其至少包含 ,C+语言编写的程序总是从 开始,到 结束。(2)在函数中使用 语句返回值,其只能返回 ,但返回值可随 的变化而变化。(3)函数声明是对以后用到的函数的特征进行必要的 ,它是一个 ,它不要求 。(4)函数的形参在未被调用之前 分配空

20、间,函数的形参的 要和实参的相同。(5)函数调用一般分为 和 ,前者的特点是 ,后者的特点是 。(6)函数的递归分为 和 ,递归由 与 两部分组成。2编程题:(1)设计两个求面积的函数: area(); /求圆面积,需传递一个参数 area(); /求矩形面积,需传递两个参数然后自行输入数据进行测试。(2)编写一个函数求满足以下条件的最大的n: 12+22+32+n2m=2; C. p1.m=3; D. (*p2)-m=4;(7) 以下叙述中不正确的是( )A. 构造函数和析构函数都是成员函数B. 构造函数和析构函数都可以带参数C. 程序中不能直接调用构造函数,但可以调用析构函数D. 构造函数

21、可以重载但析构函数不可以(8) 设A为test类的对象且赋有初值,则语句test B=A;表示( )A. 语法错误 B. 为对象A定义一个别名C. 将对象A复制给对象B D. 仅说明B和A属于同一个类(9) 以下不属于类成员函数的是( )A.构造函数 B.析构函数 C.友员函数 D.虚函数(10) 以下有关成员函数特征的叙述不正确的是( )A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置缺省数值 D.成员函数可以是静态的(11) 友元函数的作用是( )A.提高程序的效率 B.加强类的封装性C.实现数据的隐蔽性 D.增加成员函数的种类(12) 以下叙述中不正确的是( )A.

22、A. 一个类的友元函数可以无条件的使用这个类的私有成员B. B. 静态成员函数可以直接访问非静态数据成员C. C. 不可以声明抽象类的对象,但可以声明抽象类的指针变量D. D. 静态数据成员为类的所有对象所共享(13) 以下关于静态成员函数的叙述不正确的是( )A. A. 静态成员函数属于整个类B. B. 对静态成员函数的引用允许使用对象名C. C. 在静态成员函数中不能直接引用类的非静态成员D. D. 使用类名可以直接调用其静态成员函数(14) 以下关于友元函数的叙述不正确的是( )A. A. 友元函数提供了类之间数据共享的一个途径B. B. 一个友元函数可以访问任何类的任何成员C. C.

23、友元函数破坏了数据的封装D. D. 友元函数增加了程序设计的灵活性2.填空题(1) 类的成员按访问权限可分为三类: 1 、 2 、 3 。(2) 构造函数的主要作用是 1 ,析构函数的主要作用是 2 。(3) 类是对象的 1 ;而对象则是类的具体 2 。(4) 如果不做特殊说明,类成员的默认访问权限是 1 ; 结构成员的默认访问权限是 2 。(5) 在C+中定义类时,通常是利用 1 描述对象的“特征”; 利用 2 描述对象的“行为”。(6) 在定义对象的同时初始化其成员变量,需要利用 1 函数,用于初始化变量的值可以是固定的常量,也可以通过 2 获得。(7) 若类中没有明确定义析构函数,清除对象的工作 1 来完成,原因是

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1