1、二级 C+分类模拟 100 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正错误,使得程序通过运行。 程序输出: 5 a 1 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream templateclass T /*error* t min(t x,t y) return (xy) ? y:x; void main() int n=5; /*error* char c=“
2、a“; int d=1; /*error* cout min(n,n) endl; cout min(c,c) endl; cout min(d,d) (分数:30.00)_二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。 请完成函数 fun(int i),实现以下功能:当 i 等于 5 时,则打印如下内容。 # # # # # 注意:不能修改程序的其他部分,只能修改 fun()函数。 #includeiostream.h void fun(int n) void main() int n; cout “请输入打印的行数:“ endl;
3、 cin n; if( n i) cout “输入的行数必须大于 0 “ (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类 TestClass 中定义 name 为字符串类型,age 为整型,请在注释/*1*之后添加语句。 (2)设置类 TestClass0 的基类为 TestClass 类的定义,请在注释/*2*后添加语句。 (3)在类 TestClass 的派生类 TestClass0 的公有成员中定义析构函数 TestClass0,请在
4、/*3*后添加。 (4)设置类 TestClass1 的基类为 TestClass 类的定义,请在/*4*后实现。 本程序输出如下结果: TestClass class constructor TestClass0 class constructor TestClass on class constructor TestClass1 class constructor TestClass1 class constructor TestClass class constructor TestClass0 class constructor TestClass class constructor
5、注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #includeiostream. 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; /*“
6、3“* cout “TestClass0 classconstructor“ endl; ; /*4* char *major; float salary; public: TestClass1 () cout “TestClass1 class constructor“ endl; TestClass1() cout “TestClass1 class constructor“ (分数:40.00)_二级 C+分类模拟 100 答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运
7、行时有错误,请改正错误,使得程序通过运行。 程序输出: 5 a 1 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream templateclass T /*error* t min(t x,t y) return (xy) ? y:x; void main() int n=5; /*error* char c=“a“; int d=1; /*error* cout min(n,n) endl; cout min(c,c) endl; cout min(d,d) (分数:30.00)_正确答案:()解析:(
8、1)T min(T x,T y) (2)char c=“a“; (3)using namespace std; 答案考生文件夹 解析 程序的主要功能是实现题目要求的输出,解题的关键是通过调试中出现的错误提示语句,进行主要分析。 (1)C+是区分大小写的,“templateclass T”语句中定义的模板类为 T 不是 t,所以第 1 个标识下的“t min(tx,ty)”修改为“T min(T x,T y)”。 (2)第 2 个标识下的“char c=“a“;”语句中的变量 a 为 char 型,赋值为字符 a,在 C+中应该使用单引号标注字符变量,而不是双引号,所以修改为“char c=“a
9、“;”。 (3)在程序中用到 C+标准库时,要使用 std 标准命名空间进行限定。cout 为标准库函数,所以要声明cout 是在命名空间 std 中定义的流对象,即添加 using namespace std;”。二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。 请完成函数 fun(int i),实现以下功能:当 i 等于 5 时,则打印如下内容。 # # # # # 注意:不能修改程序的其他部分,只能修改 fun()函数。 #includeiostream.h void fun(int n) void main() int n; c
10、out “请输入打印的行数:“ endl; cin n; if( n i) cout “输入的行数必须大于 0 “ (分数:30.00)_正确答案:()解析:int i; for(i=0; in; i+)/外层循环,要打印的行数 int j; for(j=0;jn-i-1;j+) /循环打印空格 cout “ “; for(;jn;j+) /循环打印# cout “#“; cout 三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类 TestClass 中定义 na
11、me 为字符串类型,age 为整型,请在注释/*1*之后添加语句。 (2)设置类 TestClass0 的基类为 TestClass 类的定义,请在注释/*2*后添加语句。 (3)在类 TestClass 的派生类 TestClass0 的公有成员中定义析构函数 TestClass0,请在/*3*后添加。 (4)设置类 TestClass1 的基类为 TestClass 类的定义,请在/*4*后实现。 本程序输出如下结果: TestClass class constructor TestClass0 class constructor TestClass on class constructo
12、r TestClass1 class constructor TestClass1 class constructor TestClass class constructor TestClass0 class constructor TestClass class constructor 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #includeiostream. h class TestClass /*1* public: TestClass () cout “TestClass class constructor“ endl; TestClass (
13、) cout “TestClass class constructor“ endl; ; /*2* char *departmert; int level; public: TestClass0 () cout “TestClass0 classconstructor“ endl; /*“3“* cout “TestClass0 classconstructor“ endl; ; /*4* char *major; float salary; public: TestClass1 () cout “TestClass1 class constructor“ endl; TestClass1()
14、 cout “TestClass1 class constructor“ (分数:40.00)_正确答案:()解析:(1)添加语句:char*name; int age; (2)添加语句:class Testclass0:public TestClass (3)添加语句:Testclass0 () (4)添加语句:class Testclass1:public TestClass 答案考生文件夹 解析 本题的功能是利用构造函数和析构函数中的输出语句,输出字符串。在 VC 环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main 主函数开始入手
15、,完成类的定义以及其成员函数。 (1)题目 1 要求“TestClass 中定义 name 为字符串类型,age 为整型”。根据题目要求,在程序TestClass 类中定义变量 name 和 age,即“char*name;int age;”。 (2)题目 2 要求“设置类 TestClass0 的基类为 TestClass 类的定义”。在 C+中,从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为:class 派生类名:继承方式基类名。根据声明派生类的一般形式,这里补全“classTestClass0:public TestClass“。 (3)题目 3 要求“在类 TestClass 的派生类 TestClass0 的公有成员中定义析构函数 TestClass0“。析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个“”符号。题目中要求的类名字为“TestClass0”,即这里补全“TestClass0 ()”。 (4)题目 4 要求“设置类 TestClass1 的基类为 TestClass1 类的定义”同(2)在第 4 个标识下补充“class TestClass1:publicTestClass”。