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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

第5章 函数与宏思考与练习题答案.docx

1、第5章 函数与宏思考与练习题答案第5章 函数与宏1、 请给出函数概念的基本描述。答:函数就是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。2、 什么叫函数原型?答:函数原型是指由函数定义中抽取出来的能代表函数应用特征的部分,包括函数的数据类型、函数名称、形式参数说明。3、 什么叫函数的实参?什么叫函数的形参?答:实参是在调用函数过程中传递给被调用函数的参数;形参是被调用函数接受调用函数传递过来的数据的参数。4、 请说出函数参数为一般变量的复制传递方式、地址传递方式和引用方式的异同点。答:复制传递方式是实参的数据拷贝给了形参变量,实参和形参是具有相同数据类型但存储空

2、间是不同的两组空间。在复制传递方式下,被调用函数里对形参的操作不能改变实参的内容。地址传递方式和复制传递方式正好相反,用函数的参数本身传给被调用函数。被调用函数中对形参的操作将直接改变实参的值。调用函数将实参的地址传送给被调用函数,被调用函数对该地址的目标操作即对实参本身的操作。按地址传递,实参为变量的地址,而形参为同类型的指针。引用方式和地址传递方式的效果一样,但引用更直接、更方便。按引用传递,实参为变量,形参为同类型的引用。采用引用方式实参和形参使用的是相同的内存空间,只是名称不同而已。5、 数组在函数间传递形式有哪些?并给以比较和解释。答:数组在函数间的传递形式有复制传递方式、地址传递方

3、式、引用方式和全局数组传递方式。函数与函数之间数组的复制传递方式是调用函数将实参数组传递给被调用函数形参,形参接收是实参的地址。函数与函数之间数组的地址传递方式是将调用函数中的实参数组的起始地址传递给被调用函数的指针变量形参。被调用函数中对形参地址的目标操作,相当于对实参本身的操作,将直接改变实参数组的值。地址传递方式,实参应该为数组的指针,而形参应为同类型的指针变量。另外,数组的地址传递方式不仅要把实参数组的指针作为参数传递给函数,同时还需要传递数组的长度。与引用方式不同的是被调用函数的形参应声明为数组同类型的指针变量。函数与函数之间数组的引用传递方式需将被调用函数的形参说明为数组的引用形式

4、。在被调用函数中,对形参进行操作就是对实参数组的直接操作。数组的引用方式和地址传递方式的作用效果基本一样,但引用更直接、更方便。按引用方式传递数组,形参为实参同类型的数组引用。但引用数组名不是指针变量,不能作为左值。6、 什么叫函数指针?什么指针函数?答:函数指针是一个函数执行代码的起始地址。指针函数是指一个函数的返回值为地址量的函数。7、 什么叫内联函数?答:内联函数是类声明体里定义的函数或在类的实现部分定义的、其前用inline修饰的函数;它将简单的函数(其内不能有循环语句和开关语句)内嵌到调用他的程序代码中,这样做的目的是为了节省了调用函数的开销。8、 什么叫函数重载?答:函数重载是指使

5、用一个函数名称定义了多个完成不同功能的函数,这些函数的输入参数类型或个数不一样,相应的函数类型也有可能改变。9、 什么叫预编译语句?答:在C+程序的源代码中可以包括各种编译用的命令语句,这些语句都称为预编译语句。10、 什么叫宏?谈谈带参数宏与内联函数之间的异同点.答:宏是指定义一个标识符来代替一个字符序列。内联函数和宏都是在程序出现的地方展开,是在调用该函数的程序处或应用宏处将它展开。但内联函数可以多行的程序段,而宏通常是单行代码段。11、 指出下列函数说明语句有哪些错误并说出原因。(1) char *volume ( int height, width, char background )

6、 ;答:函数的参数部分说明错误;width参数没有指出数据类型。(2) double work ( double &matrix10 ) ;答:参数部分引用数组的说明形式错误;不符合引用数组的说明形式。(3) void display ( int arr , int size ) ;答:参数二维数组的说明不对;右下标大小不能为空。(4) void sum ( int (&a) ) ;答:不符合引用数组的说明形式;大小不能缺省。 (5) int fun( double a, int b = 0, int c );答:缺省值位置说明错误;指定缺省值必须从右向左给出,不能跳跃指定缺省值。(6) do

7、uble Matrix ( double *m );答:指针变量数组的说明形式不对;大小不能缺省。(7) char * fetch ( int a= 24, int b, char c=0);答:缺省值位置说明错误;指定缺省值必须从右向左给出,不能跳跃指定缺省值。(8) void length( int &a 2 );答:引用数组说明错误;不符合引用数组的说明形式。12、 什么叫递归函数?简述其执行过程。答:递归函数是指一个函数的函数体中直接调用或间接调用了该函数自身的函数。递归函数调用的执行过程分为两个阶段: (1)递推阶段:从原问题出发,按递归公式递推,从未知到已知,最终达到递归终止条件。

8、(2)回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。13、 阅读下列程序并给出运行结果。(1) #include int fun(int x,int y) return x*y;void main(void)int k=5;coutfun(k,2)endl; 运行结果是:10(2) #include #include void fun (int a, int b, double &s, double &t) s=sqrt (a*a+b*b); t=sqrt (a*a-b*b); void main(void)double m, n; fun (4,3,m,n); c

9、outm+nendl; 运行结果是:7.64575(3) #include int n=0; int &fun (int x) /引用型函数 n -=x; return n; void main(void)fun(100) += 10; coutn=nendl; 输出结果是:n= -90(4) #include stdio.h int d=0; int fun( int p) static int g=10 ; g += +d - p; printf(%d ,g); return ( g ); void main( void ) int d=10; printf(%d n,fun( fun(d

10、) - fun(2) ) ); 运行结果是:1,1,4,4(5) #include iostream.hint afox(int x,int &y,int *v,int *w) * v = - -x + y+; *w= x - y; return(v); void main(void) int a=3,b=3,c=3,d=3; afox ( a,b,&c, &d ); cout a , b , c , dendl; 运行结果是:3,4,6,-114、 已知三角形的三边,求三角形面积,将其编写成一个函数。答:#include #include double area( double a,doub

11、le b,double c,double s) / 求三角行的面积 double p; p=sqrt(s*(s-a)*(s-b)*(s-c); return p;void main() double x,y,z,q; cout请输入三角形三边的长度xyz; /输入三边长度 if(!(x+y)z)&(x+z)y)&(y+z)x) /判断给出的三边能否构成三角形 cout你输入的三边不能构成三角形endl; else q=area(x,y,z,(x+y+z)/2); cout三角形面积是:Area=qendl; 15、 编写函数求两个整型参数a和b的最小公倍数。答:#includevoid num

12、(int x,int y) int arg100; int m=0,n=0,j=0; for(int i=0;iy?x:y; for (;n=(x*y);n+) if (n%x=0)&(n%y=0) argj=n; j+; for(int k=0;kargk) t=arg0; arg0=argk;argk=t; cout这两个数的最小公倍数是: arg0endl;void main() int a,b; cout请输入两个整数:ab; num(a,b);16、 编写判断一个正整数是否为素数的函数。答:#include #include void main() int m, i, z; bool

13、 q=false; coutm; z=(int)sqrt(m); /求m的平方根 for(i=2;i=z;i+) if(m%i=0) /数m是否能被小于m平方根的数整除 q=true; break; if( q ) cout你输入的数不是素数!endl; else cout你输入的数是素数!endl;17、 分析并指出下列函数或程序实现的功能。(1) void Trans(int x) char a10; int i=0, rem; do rem = x%16; x=x/16; if(rem0) cout ai-; coutendl; 答:实现的功能是:将ai中的元素转换成十六进制。(2) #

14、include double Test(int n) double sign= -1, s (1); for(int i=2; i=n; i+) s += sign / (i*i); sign *= -1; return s; void main(void) int a(7); cout Test(a) endl; 实现的功能是:求公式 (3) double Calculate (double a, double b, char op) switch(op) case +: return a+b ; case -: return a-b ; case *: return a*b ; case

15、/: if(b=0) coutdivided by 0!endl; return(-9999.999999); else return a/b; default: coutoperator error!endl; return(-9999.999999); 答:实现的功能是:两个数的加减乘除运算。 (4) #include #include const N=10; int ToCompute(int x, int y) int z; cout x + y z; if(x+y=z) return 1; else return 0; void main(void) int a, b, c= 0 ;

16、 srand( 100 ); /初始化随机数序列 for(int i=0;iN;i+) a=rand()%20+1; /rand()函数产生0-32767之间的一个随机数 b=rand()%20+1; c += ToCompute (a,b); cout得分:c*10endl; 答:实现的功能是:对20以内任意两个加发运算能力的测试。18、 编写一个函数,要求将一个double型的一维数组和数组长度作为参数,并返回该数组中的正数之和。答: #include double TestArray(double b,int Size);void main() int n=0; double a100,

17、r=0; coutn; for(int i=0;in;i+) /输入数组的元素 coutai+1ai; r=TestArray(a,5); /调用函数TestArray, 将返回值赋给r cout Result= r endl; /输出rdouble TestArray(double b, int Size) / 求数组中非负元素的和 double s=0; b+; for(int i=0; iSize; i+) if(bi-10) continue; s += bi-1; return(s);19、 编写一个函数,能够实现将一个double型的二维矩阵转置的功能。答:#includevoid

18、 Turarr(double arg,int a,int b) /数组转置double k;for(int i=0;ia;i+) for(int j=i;jb;j+) if(i!=j) k=argij;argij=argji;argji=k; void main() double *q; double a=1.0,2.0,3.0,4.0; /初始化数组 q=a00; Turarr(q,2,2);20、 汉诺塔(Hanoi)是在欧洲比较流行的一种游戏。游戏的要求是这样的:设有A,B,C三个竿,A竿上有若干个由大到小的穿心圆盘,大的圆盘在下面,小的圆盘在上面,B和C都是空杆,请你把A杆上的圆盘都倒到C杆上,但在倒盘的过程中不允许大的圆盘压在小的圆盘之上(如下图所示)。请用递归函数方法实现该程序。答:#include void hanoi(int n,char p,char q,char r) if (n=1) coutmove p to rendl; else hanoi(n-1,p,r,q); coutmove p to rendl; hanoi(n-1,q,p,r); void main() int n; char a=A; char b=B; char c=C; coutn; coutThe solution for n=nendl; hanoi(n,a,b,c);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2