四川大学电子卓越班高级语言程序设计II考试试题A(2011)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机学院2010级高级语言程序设计II计期末试题
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.关于函数重载,下列叙述中错误的是( )。
A)重载函数的函数名都相同
B)重载函数必须在参数个数或类型上有所不同
C)重载函数的返回值类型必须不相同
D)重载函数的函数体可以相同,也可以不相同
参考答案:C
2.下列关于模板的叙述中,错误的是( )。
A)模板声明中的第一个符号总是关键字template
B)在模板声明中用“<”和“>”括起来的部分是模板的类型形参表
C)类模板的数据成员的类型只能是类型参数
D)通常不写函数模板的类型实参
参考答案:C
3.下列选项中,不属于面向对象程序设计特征的是( )。
A)继承性B)多态性
C)可比性D)封装性
参考答案:C
4.派生类的成员函数不能访问基类的( )。
A)保护成员B)公有成员
C)私有成员D)前面各选项都正确
参考答案:C
5.由一个类派生出来的类称为( )。
A)新生类B)父类
C)基类D)子类
参考答案:D
6.一个全局函数要访问某个类的所有私有和保护成员,只能将此函数声明为这个类的( )。
A)虚函数B)纯虚函豢
C)重载函数D)友元函数
参考答案:D
7.在语句“cout << data;”中,cout是( )。
A)C++的关键字B)类名
C)对象名D)函数名
参考答案:C
8.运算符重载只能改变运算符原有的( )。
A)操作数类型B)操作数个数
C)优先级D)结合性
参考答案:A
9.下列关于类和对象的叙述中,错误的是( )。
A)一个类只能有一个对象B)对象是类的具体实例
C)类是某一类对象的抽象D)类和对象的关系就像数据类型和变量的关系
参考答案:A
10.为取代C中带参数的宏,在C++中使用( )。
A)重载函数B)内置函数
C)递归函数D)友元函数
参考答案:B
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.一个函数名为TestFun,返回值类型为int,没有参数的纯虚函数可以定义为()。
参考答案:virtual int TestFun () = 0;
2.运算符重载使用的关键字是()。
参考答案:operator
3.采用struct定义的类中数据成员和成员函数的默认访问权限是()。
参考答案:public或公有
4.派生类中的成员不能直接访问基类中的()成员。
参考答案:私有
5.声明类的友元函数的关键字为( )。
参考答案:friend
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include
using namespace std; // 使用命名空间std
class A
{
public:
A() { cout << "A"; } // 构造函数
~A() { cout << "~A"; } // 析构函数
};
int main(void) // 主函数main()
{
A *p = new A; // 定义指针
delete p; // 释放动态空间
cout << endl; // 换行
return 0; // 返回值0, 返回操作系统}
上面程序的输出结果为:
参考答案:
A~A
2.阅读下面程序,写出输出结果。
#include
using namespace std; // 使用命名空间std
class Test
{
private:
static int n; // 静态成员
public:
Test() { n += 6; } // 构造函数
~Test() { n -= 8; } // 析构函数
static int GetNum() { return n; } // 返回n
};
int Test::n = 2; // 初始化n
int main(void) // 主函数main()
{
Test *p = new Test; // 定义指针p
delete p; // 释放p指向的动态对象cout << "n=" << Test::GetNum() << endl; // 输出n
return 0; // 返回值0, 返回操作系统}
上面程序的输出结果为:
参考答案:
n=0
3.阅读下面程序,写出输出结果。
#include
using namespace std; // 使用标准命名空间std
template
ElemType f(ElemType x)
{
ElemType y; // 临时变量
y = x * (ElemType)5.8;
return y;
}
int main() // 主函数main()
{
cout << f(5) << endl; // 输出f(5)
cout << f(5.0) << endl; // 输出f(5.0)
return 0; // 返回值0, 返回操作系统
}
上面程序的输出结果为:
参考答案:
25
29
4.阅读下面程序,写出输出结果。
#include
using namespace std; // 使用标准命名空间std
double Division(double a, double b) // 除法函数
{
if (b == 0) throw "除数为0"; // 抛出异常
else return a / b; // 返回a/b
}
int main() // 主函数main()
{
try // 用try封装可能出现异常的代码{
double a = 1, b = 0; // 局部变量
cout << "a/b" << Division(a, b) << endl; // 显示a/b
}
catch(char message[]) // 捕捉并处理异常
{
cout << "异常信息:";