高级语言程序设计(C++)函数作业及答案.doc
C++函数作业
习题
填空题:
1.1被定义为形参的是在函数中起 (1)起形式 作用的变量,形参只能用 (2)变量名 表示。实参的作用是 (3)具体要处理的数据量 ,实参可以用 (4)变量名 、 (5)常量 、 (6)表达式表示。
1.2局部域包括(1)块域、(2)函数域 。使用局部变量的意义在于 (4)节省存储空间 ,防止错误扩散,使程序易于维护。
1.3静态局部变量存储在(1)全局数据区,在 (2)第一次被执行 时候建立,生命期为 (3)全局生命期 ,如果定义时未显式初始化,则其初值为 (4) 0 。
1.4局部变量存储在 (1)栈区,在 (2)函数被调用或执行到所定义的块中 时候建立,生命期为 (3)局部生命期 如果定义时未显式初始化,则其初值为 (4)随机数 。
1.5编译预处理的作用是 (1)源程序文件进行处理,生成一个中间文件,编译器对此中间文件进行编译并生成目标代码 ,预处理命令的标志是 (2)# 。在多文件系统中,程序由 (3)项目 来管理。用户自定义头文件中通常定义一些 (4) 自己项目中用到的函数 。
1.6 设有函数说明如下:
f(int x,int y){return x%y+1;}
假定a=10,b=4,c=5,则下列语句的执行结果分别是:
(1)cout<
1.7下列程序的运行结果分别为 (1) 和 (2)
(1)
#include
using namespace std;
int a,b;
void f(int j){
static int i=a;
int m,n;
m=i+j;j++;i++;n=i*j;a++;
cout<
cout<
}
int main(){
a=1;b=2;
f(b);f(a);
cout<
return 0;
}
结果是:(1)
i=2 j=3 m=3 n=6
i=3 j=3 m=4 n=9
a=3 b=2
(2)
#include
using namespace std;
float sqr(float a){ return a*a;}
float p(float x,int n){
cout<
if(n==0)return 1;
else if(i%2!=0)return x*sqr(p(x,n/2));
}
int main(){
cout<
return 0;
}
结果是:(2)
in-process:x=2 n=13
in-process:x=2 n=6
-1.#IND
二、简答题
2.1 函数的形参和实参是如何对应的?形参和实参的数目必须一致吗?什么情况下可以不一致?
答: 函数的形参和实参是按照位置对应的,一般情况下形参和实参的数目应该一致,当函数定义为具有默认参数的函数时,形参与实参个数可以不同。.
2.2 函数和内联函数的执行机制有何不同?定义内联函数有何意义?有何要求?
答:执行函数时,系统要建立堆栈空间、保护现场、传递参数以及控制程序执行等。内联函数则是在编译过程中直接将内联函数代嵌入到调用函数中。
将函数调用变为顺序执行。
内联函数的本质是空间换时间,所以内联函数只适用于功能简单、代码段小且被重复使用的函数。
2. 3 全局变量和全局静态变量的区别在哪里?为什么提倡尽量使用局部变量?
全局变量存储在全局数据区,在它定义后的所有函数中都可见,而局部变量只在定义它的函数内或块内可见。
使用局部变量可以节省内存空间,不使错误扩散,易于维护。
2.4 函数重载的作用是什么?满足什么条件的函数才可以成为重载函数?重载函数在调用时是怎样进行对应的?
可以用相同的函数名来定义一组功能相同或相似的函数。
参数类型必须不同。
调用时,按如下过程对应:
如果有严格匹配的函数,则调用该函数。
参数内部转换后如果匹配,则调用该函数。
通过用户定义的转换寻求匹配。
2.5 多文件结构的程序是如何进行管理并运行的?采用多文件结