- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 14
第三章 函数习题
第三章 函数习题
一.基本概念与基础知识自测题
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) 时候建立,生存期为(3) ,如定义时未显式初始化,则其初值为 (4) 。
答案:
(1)全局数据区
(2)编译
(3)全局生存期
(4)全0
3.1.4局部变量存储在 (1) 区,在 (2) 时候建立,生存期为(3) ,如定义时未显式初始化,则其初值为 (4) 。
答案:
(1)栈
(2)在函数或块开始执行时
(3)函数或块的执行期
(4)随机值
3.1.5 编译预处理的作用是 (1) ,预处理指令的标志是 (2) 。多文件系统中,程序由 (3) 来管理,用户自定义头文件中通常定义一些 (4) 。
答案:
(1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码
(2)#
(3)工程文件
(4)用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量
3.1.6 设有函数说明如下:
int f(int x, int y){ return x%y+1; }
假定a=10,b=4,c=5,下列语句的执行结果分别是 (1) 和 (2) 。
(1) coutf(a,b)+f(a,c); (2) coutf(f(a+c,b),f(b,c));
解答:
(1)答案:4
(2)答案:5
3.1.7下列程序的输出结果分别为 (1) 和 (2) 。
(1)
#includeiostream
using 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++;
couti=i\tj=j\t;
coutm=m\tn=nendl;
}
int main(){
a=1; b=2;
f(b); f(a);
couta=a\tb=bendl;
return 0;
}
解:
答案:
i=2 j=3 m=3 n=6 (对应蓝色)
i=3 j=3 m=4 n=9 (对应绿色)
a=3 b=2
(2)
#includeiostream
using namespace std;
float sqr(float a){return a*a;}
float p(float x,int n){
coutin-process:x=x\tn=nendl;
if(n==0) return 1;
else if(n%2!=0) return x*sqr(p(x,n/2));
else return sqr(p(x,n/2));
}
int main(){
coutp(2.0,13)endl;
return 0;
}
图解递归,共五层,返回值是回归时产生:
答案:
in-process:x=2 n=13
in-process:x=2 n=6
in-process:x=2 n=3
in-process:x=2 n=1
in-process:x=2 n=0
8192
3.2 简答题
3.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?
答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。
3.2.2 函数和内联函数的执行机制有何不同?定义内联函数有何意义?又有何要求?
答:内联函数的调用机制与一般函数不同,编译器在编译过程中遇到inline时,为该函数建立一段代码,而后在每次调用时直接将该段代码嵌入到调用函数中,从而将函数调用方式变为顺序执行方式,这一过程称为内联函数的扩展或内联。内联函数的实质是牺牲空间来换取时间。因inline指示符对编译器而言只是一个建议,编译器也可以选择忽略该建议,内联函数只适用于功能简单,代码短小而又被重复使用的函数。函数体中包含复杂结构控制语句,如switch、复杂if嵌套、while语
文档评论(0)