- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C第三章习题解答【DOC精选】
第三章 函数习题
一.基本概念与基础知识自测题
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 设有函数说明如下:
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.h
int a,b;
void f(int j){
static int i=a;
int m,n;
m=i+j; i++; j++; n=i*j; a++;
cout”i=”i’\t’”j=”j’\t’;
cout”m=”m’\t’”n=”nendl;
}
void main(){
a=1; b=2;
f(b); f(a);
cout”a=”a’\t’”b=”bendl;
}
答案:
(1)i=2 j=3 m=3 n=6
i=3 j=3 m=4 n=9
a=3 b=2
(2) #includeiostream.h
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));
}
void main(){
coutp(2.0,13)endl;
}
答案:
(2)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
图解递归,共五层,f是回归时产生:
x n f
2 13 8192 f=x*sqr(下一层的f) 2 6 64 f=sqr(下一层的f) 2 3 8 f=x*sqr(下一层的f) 2 1 2 f=x*sqr(下一层的f) 2 0 1 f=1
4.2 简答题
3.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?
答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。
3.2.2 函数和内联函数的执行机制有何不同?定义内联函数有何意义?又有何要求?
答:内联函数的调用机制与一般函数不同,编译器在编译过程中遇到inline时,为该函数建立一段代码,而后在每次调用时直接将该段代码嵌入到调用函数中,从而将函数调用方式变为顺序执行方式,这一过程称为内联函数的扩展或内联。内联函数的实质是牺牲空间来换取时间。因inline指示符对编译器而言只是一个建议,编译器也可以选择忽略该建议,内联函数只适用于功能简单,代码短小而又被重复使用的函数。函数体中包含复杂
文档评论(0)