1、学优中考网 第三章 函数习题一基本概念与基础知识自测题3.1 填空题3.1.1 被定义为形参的是在函数中起 (1) 作用的变量,形参只能用 (2) 表示。实参的作用是 (3) ,实参可以用 (4) 、 (5) 、 (6) 表示。答案:(1)自变量(2)变量名(3)将实际参数的值传递给形参(4)具有值的变量(5)常量(6)表达式3.1.2 局部域包括 (1) 、 (2) 和 (3) 。使用局部变量的意义在于 (4) 。答案:(1)块域(2)函数域(3)函数原型域(4)局部变量具有局部作用域使得程序在不同块中可以使用同名变量3.1.3 静态局部变量存储在 (1) 区,在 (2) 时候建立,生存期为
2、 (3) ,如定义时未显式初始化,则其初值为 (4) 。答案:(1)全局数据区(2)编译(3)全局生存期(4)全 03.1.4 局部变量存储在 (1) 区,在 (2) 时候建立,生存期为 (3) ,如定义时未显式初始化,则其初值为 (4) 。答案:(1)栈(2)在函数或块开始执行时(3)函数或块的执行期(4)随机值3.1.5 编译预处理的作用是 (1) ,预处理指令的标志是 (2) 。多文件系统中,程序由 (3) 来管理,用户自定义头文件中通常定义一些 (4) 。答案:(1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码(2)#(3)工程文件(4)用户构造的
3、数据类型(如枚举类型) ,外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量3.1.6 设有函数说明如下:f(int x, int y) return x%y+1; 假定 a=10,b=4,c=5,下列语句的执行结果分别是 (1) 和 (2) 。(1) coutusing namespace std;int a,b;void f(int j)static int i=a;int m,n;m=i+j; i+; j+; n=i*j; a+;coutusing namespace std;float sqr(float a)return a*a;float p(float x,int n)
4、coutusing namespace std;char capitalize(char ch)if(ch=aMaxCommonDevisor(int n,int m)int i; for( i=n;i=1;i-)if(n%i=0 return i;MinCommonMultiple(int n,int m)int i;for(i=n;iij;coutusing namespace std;digit(int num,int k)int s10=0,0,0,0,0,0,0,0,0,0;int i=0;do/先把整数转换为数字串si=num%10;num/=10;i+;while(num0);i
5、f(kusing namespace std;factors(int num,int k)/缺省返回值为整型int count=0;while(num%k=0)count+;num/=k;return count;int main()cout#includeusing namespace std;bool prime(int m)if(m=1|m=0) return false;if(m=2) return true;int k=(int)sqrt(m);for(int i=2;ik) return true;else return false;int main()学优中考网 for(int
6、n=4;nusing namespace std;void PrintDiagram(int m)int i ;for(i=0;iusing namespace std;Acm(int m,int n)if(m=0) return n+1;if(n=0) return Acm(m-1,1);return Acm(m-1,Acm(m,n-1);0m,n )1,( 1),(Acm),-nAcint main()coutusing namespace std;double P(int n,double x)if(n=0) return 1;if(n=1) return x;return (2*n-1
7、)*x*P(n-1,x)-(n-1)*P(n-2,x)/n;int main()coutusing namespace std;inline max(int a,int b,int c)if(abif(bareturn c;int main()cout=0inline bool IfDigitChar(char ch)if(ch=0while(ch!=!)if(IfDigitChar(ch) coutch;return 0;3.13 设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。两个实数求余定义为实数四舍五入取整后相除的余数。解:实数四舍五入取整,正数是+0.5 取整,负数是
8、-0.5 取整。#include#includeusing namespace std;mod(int n,int m)return n%m;round(double x) /四舍五入函数if(x=0) return int(x+0.5);else return int(x-0.5);mod(double x,double y)return round(x)%round(y);int main()coutusing namespace std;#include“ep3_14.h“int main()double a,b,r;coutr;coutab;cout0)for(i=0;i0)p2(w-1);for(i=0;i0)for(i=0;i0)for(i=0;iw;i+) couttw;coutendl;p4(w-1);for(i=0;iw;i+) couttw;coutendl;调用 p4(4)。答:用调用树来解答,如下图,注意打印是在递归调用之前和之后各一次:P 4 ( 0 )8765P 4 ( 1 )P 4 ( 2 )P 4 ( 3 )P 4 ( 4 )1234打印: 4 4 4 4 13 3 3 22 2 31 41 52 2 63 3 3 74 4 4 4 8学优中考?,网