一、名词解释
引用:所谓引用,就是给对象起一个别名,使用该别名可以存取该对象。换句话说,是使新的对象和原对象共用一个地址。
内联函数:内联函数是使用inline关键字声明一个函数。
重载函数:重载函数通常用来对具有相似行为而数据类型不同的操作提供一个通用的名称。
二、填空题
函数类
(2) C++有两种注释符号,一种是//,另一种是/*,,,,*/。
(3)使用C++风格的输入输出,在程序中必须包含头文件iostream。
(4)cin是预定义的标准输入流对象,>>是输入操作符,也称提取运算符。
(5)cout是预定义的标准输出流对象,<<是输出操作符,也称插入运算符。
(6)指针的值是它所指向对象的地址值。指针的类型是它所指向对象的类型。指针的内容便是它所指向对象的ֵ。
(7)C++使用运算符&来定义一个引用,对引用的存取都是对它所引用的对象的存取。
(8)当一个函数调用出现在函数定义之前时,必须先用函数原型对函数进行声明。
(9)C++有值传递和引用传递两种参数传递机制。
(10)使用关键字inline声明的函数称为内联函数。
(11)运算符new用于进行动态内存分配,运算符delete用于释放动态分配的内存。
(12)下面程序的输出结果为
#include<iostream>
using namespace std;
int main()
{
}
三、选择题(至少选一个,可以多选)
(1)在整型指针变量p2、p3的定义中,错误的是(A)。
(2)若有定义“double xx=3.14,*pp=&xx;”,则*pp等价于(C)。
(3)下面对引用的描述中(C)是错误的。
(4)函数没有返回值的时候,应该选择(A)函数类型。
(5)在函数的定义格式中,下面各组成部分中,(D)是可以省略的。
(6)对重载的函数来说,下面叙述不正确的是(D)。
(7)下列有关设置函数参数默认值的描述中,(D)是正确的。
C.默认参数要设置在函数的原型中,而不能设置在函数的定义语句中 D.设置默认参数可使用表达式,但表达式中不可用全局变量
(8)下面说法正确的是(BC)。
B.具有循环语句、switch语句的函数不能说明为内联函数
C.使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小
D.使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢
(9)一个函数功能不太复杂,但要求被频繁调用,应选用(A)。
(10)C++对C语言做了很多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象的是(D)。
四、判断题
(2)使用const说明常量时,可以不必指出类型。(错)
(3)引用被创建时可以用任意变量进行初始化。(错)
(4)一个返回引用的调用函数可以作为左值。(对)
(5)函数可以没有参数,也可以没有返回值。(对)
(6)没有参数的两个函数是不能重载的。(对)
(7)函数可设置默认参数,但不允许将一个函数的所有参数都设置为默认参数。(对)
(8)运算符new分配的空间由运算符delete释放。(对)
五、简答题
(1)名字空间的定义是什么?
答:名字空间用来防止命名的冲突。
(2)引用有何用处?
答:除了独立引用外,在C++程序中,引用的主要用途是用作函数参数和函数返回值。
(3)比较直调用和引用调用的相同点与不同点。
答:在值传递机制中,作为实参的表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。函数体对形参的访问、修改都是在这个标识对象上操作,与实参无关,即数据的传递是单向的。使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中对形参的操作,实质是对实参的直接操作,即数据的传递是双向的。
(4)内联函数有什么作用?它有哪些特点?
答:内联函数是使用inline关键字声明一个函数。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了时间开销。
(5)函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?
答:不必一致。所以的参数是根据位置和类型而不是名字来区分的。
(6)重载函数时通过什么来区分?
答:编译系统将根据函数参数的类型和个数来判断使用哪一个函数。
六、程序分析题(写出程序的输出结果,并分析结果)
- #include<iostream>
- usingnamespace
- int
- int
- int
- "num="
- "ref="
- return
输出结果如下:
结果分析如下:
七、程序设计题
写出一个完整的C++程序,使用系统函数pow(x,y)计算x^y的值,注意包含头文件cmath。
程序如下:
- //xiti2-1.cpp
- #include<iostream>
- #include<cmath>
- usingnamespace
- int
- float
- float
- "pow("<<x<<","<<y<<")="
- return
运行结果如下: