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