1、国家二级 C+机试(操作题)模拟试卷 240及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正错误,使得程序通过运行。 程序输出: 5 a 1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream template class T *error* t min(t x, t y) return(x y)?y: x; void main() int n=5; *error* char c=“a“; int d=1; *error* cout
2、 min(n, n) endl; cout min(c, c) endl; cout min(d, d) endl; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。请完成函数 fun(int i),实现以下功能:当 i等于 5时,则打印如下内容。 # # # # # 注意:不能修改程序的其他部分,只能修改 fun()数。 #include iostream h void fun(int n) void main() int n; cout “请输入打印的行数: “ endl; cin n; if(n 1) cout “输入的行数必须大于 0“ endl; r
3、eturn; fun(n); return; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。其中定义的类并不完整 ,按要求完成下列操作,将类的定义补充完整。 (1)在类 TestClass中定义 name为字符串类型, age为整型,请在注释*1*之后添加语句。 (2)设置类 TestClass0的基类为 TestClass类的定义,请在注释*2*后添加语句。 (3 )在类 TestClass的派生类 TestClass0的公有成员 中定义析构函数 TestClass0,请在 *3*后添加。 (4)设置类 TestClass1的基类为 TestClass类的
4、定义,请在 *4*后实现。 本程序输出如下结果: TestClass class constructor TestClass0 class constructor TestClass on class constructor 11estClass1 class constructor TestClass1 class constructor TestClass class constructor TestClass0 class constructor 11estClass class constructor 注意:增加代码,或者修改代码的位置已经用符号表示 出来。请不要修改其他的程序代码。
5、#include iostream h class TeStClass *1* public: TestClass()(cout “TestClass class constructor“ endl; TestClass()(cout “TestClass class constructor“ endl; ; *2* char*departmert; int level; public: TestClass0() (cout “TestClass0 classconstructor“ endl; *3* (cout “TestClass0classconstructor“ endl; ; *4
6、* char*major; float salary; public: TestClass1() cout “TestClasSl class constructor“ endl; TestClass1()cout “TestClass1 class constructor“ end1; ; void main() TestClass0 s1; TestClass1 t1; 国家二级 C+机试(操作题)模拟试卷 240答案与解析 一、基本操作题 1 【正确答案】 (1)T min(T x, T y) (2)char c=a; (3)using namespace std, 【试题解析】 (1)
7、C+是区分大小写的, “template class T ”语句中定义的模板类为 T不是 t,所以第 1个标识下的 “t min(t x, ty)”修改为 “T min(T x, T y)”。 (2)第 2个标识下的 “char c=“a“; ”语句中的变量 a为 char型,赋值为字符 a,在C+中应该使用单引号标注字符变量,而不是双引号,所以修改为 “charc=a; ”。 (3)在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。 cout为标准库函数,所 以要声明 cout是在命名空间 std中定义的流对象,即添加 using namespace std; ”。 二、简单应
8、用题 2 【正确答案】 int i; for(i=0; i n; i+)外层循环,要打印的行数 int j; for(j=0; j n-i-1; j+)循环打印空格 cout ; for(; j n; j+)循环打印 # cout “#“; cout endl;打印每一行的回车 【试题解析】 (1)外层循环打印每一行。 (2)内层循环,分为打 印空格和打印 #。打印空格由第一个位置到第 n-i-1。打印 #,是由打印完空格开始一直到行结束。 (3)最后在外循环中打印每一行的结束。 三、综合应用题 3 【正确答案】 (1)添加语句: char*name; intage; (2)添加语句: cla
9、ssTestClass0: publicTestClass (3)添加语句: TestClass0() (4)添加语句: classTestClass1: publicTestClass 【试题解析】 (1)题目 1要求 “Testflass中定义 name为 字符串类型, age为整型 ”。根据题目要求,在程序 TestClass类中定义变量 name和 age,即“char*name; intage; ”。 (2)题目 2要求 “设置类 TestClass()的基类为 TestClaSs类的定义 ”。在 C+中,从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为: class
10、派生类名: 继承方式 基类名。根据声明派生类的一般形式,这里补全 “class TestClass0: public TestClass”。 (3)题目 3要求 “在类 TestClass的派生类 TestClass0的公有成员中定义析构函数TestClass0”。析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个 “ ”符号。题目中要求的类名字为 “TestClass0”即这里补全 “ TestClass0()”。 (4)题目 4要求 “设置类 TestClass1的基类为 TestClass1类的定义 ”同 (2)在第 4个标识下补充 “class TestClass1: public TestClass”。