1、二级 C+分类模拟 88 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正程序中的错误。 本题的功能是:从键盘输入字符串 s,然后输出字符串 s 中的字符个数。 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #include iostream int main () /*error* /*error* namespace std; char s256; cin.getline(s,256); co
2、ut strlen(s) (分数:30.00)_二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。请完成函数 fun(char*data),此函数的功能是,找出字符串数组中最小的 ASCII 值,如果有相同变量,则输出最后一个所在的位置;如果字符串为空,则返回-1;或者不存在时也返回-1。 注意:请勿改动主函数 main 与其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。计算数字如果第一个字母最小,则返回 0。依次增加。 #include iostream. h int fun(char* data) void m
3、ain() char str1024; cout “请输入一行英文字符串:/n“ ; cin.getline(str,1024); cout “最小的字母出现在距离头部“ fun (str) “个字母处“ (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。请完成以下部分,实现在屏幕上输出为: TestClass3 TestClass2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 TestClass0 不能被实例化,请定义一个纯虚函数 print,在注释/*1*后添加适当的语句。 (2)类 TestClas
4、s1 私有虚继承类 TestClass0,请在注释/*2*后添加适当的语句。 (3)类 TestClass2 公有继承类 TestClass0,请在注释/*3*后添加适当的语句。 (4)类 TestClass3 公有继承类 TestClass2 与 TestClass1,请在注释/*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main 与其他函数中的任何内容。 #include iostream.h class TestClass0 /*1* ; /*2* class TestClass1: public: void print() ; /*3* class Tes
5、tClass2: public: void print() ; ; /*4* class TestClass3: public: void print() (分数:40.00)_二级 C+分类模拟 88 答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正程序中的错误。 本题的功能是:从键盘输入字符串 s,然后输出字符串 s 中的字符个数。 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #include
6、 iostream int main () /*error* /*error* namespace std; char s256; cin.getline(s,256); cout strlen(s) (分数:30.00)_正确答案:()解析:std:cout “please input a string:“ std:endl; (2)using namespace std; 答案考生文件夹 解析 程序要求从键盘输入字符串 s,然后输出字符串 s 中字符的个数。从已给定源程序的 main 主函数开始入手,程序通过 cin 输入标准类型的成员函数 getline 读入一行字符,然后通过strle
7、n()函数求得字符串长度。 (1)第 1 个标识下实现在屏幕上输出“please input a string:”提示语句。在程序中用到 C+标准库时,要使用 std 标准命名空间进行限定。cout 为标准库函数,所以要声明 cout 是在命名空间 std 中定义的流对象,即第 1 个标识下的“std:cout “please input a strina:“ 二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。请完成函数 fun(char*data),此函数的功能是,找出字符串数组中最小的 ASCII 值,如果有相同变量,则输出最后一个所
8、在的位置;如果字符串为空,则返回-1;或者不存在时也返回-1。 注意:请勿改动主函数 main 与其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。计算数字如果第一个字母最小,则返回 0。依次增加。 #include iostream. h int fun(char* data) void main() char str1024; cout “请输入一行英文字符串:/n“ ; cin.getline(str,1024); cout “最小的字母出现在距离头部“ fun (str) “个字母处“ (分数:30.00)_正确答案:()解析:int MinPos=0; /初始化
9、最小值位置 if(data=NULL) /判断输入字符串是否为空 return-1; char MinData=data0;/设置字符串第一个字符为最小值 if(MinData=0) /判断第一个字符是否存在 return -1; for(int i=1;datai!=0;i+) if(datai=MinData) MinData=datai; /逐个判断每个字母是否小于标记字符 MinPos=i; /最小值位置 15 return MinPos; 答案考生文件夹 解析 (1)该程序功能是找出字符串数组中最小的 ASCII 值。它的解题思路,用最小值变量标记第一个待找字符,把所有待找字符和标记
10、字符逐个进行比较,并标记其当前最小值及其所在位置,从而找出最小值。 (2)从已给部分源程序的 main 主函数开始入手,核心函数 int fun(char*data)中的 data 参数为输入的字符串数组,其中 MinPos 为最小值位置。 (3)MinPos 变量首先指向字符串 data 的第一个字符,同时将标志位 MinPos 初始值赋为 0。 (4)然后利用 for 循环对每一个当前字符与 MinPos 标记的字符进行比较。 (5)循环中将求得的最小数据 datai赋值给 MinData,并将该数据项数组标志位赋给标志位 MinPos。三、程序设计题(总题数:1,分数:40.00)3.使
11、用 VC6 打开 下的源程序文件 modi3.cpp。请完成以下部分,实现在屏幕上输出为: TestClass3 TestClass2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 TestClass0 不能被实例化,请定义一个纯虚函数 print,在注释/*1*后添加适当的语句。 (2)类 TestClass1 私有虚继承类 TestClass0,请在注释/*2*后添加适当的语句。 (3)类 TestClass2 公有继承类 TestClass0,请在注释/*3*后添加适当的语句。 (4)类 TestClass3 公有继承类 TestClass2 与 TestClass1,请在注释
12、/*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main 与其他函数中的任何内容。 #include iostream.h class TestClass0 /*1* ; /*2* class TestClass1: public: void print() ; /*3* class TestClass2: public: void print() ; ; /*4* class TestClass3: public: void print() (分数:40.00)_正确答案:()解析:添加语句:virtual void print()=0; (2)将“class T
13、estClass1:”补充完整为:class TestClass1:virtual private TestClass0 (3)将“class TestClass2:”补充完整为:class TestClass2:public TestClass0 (4)将“class TestClass3:”补充完整为:class TestClass3:public TestClass2,public TestClass1 答案考生文件夹 解析 在 VC 环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。本题从题干要求入手,依次处理各个类,完成各个类的定义。 (1)题目 1
14、 要求“请定义一个纯虚函数 print”。在 C+中,虚函数在基类中用 virtual 声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为 0 的函数,即“virtual void print()=0;”。 (2)题目 2 要求“类 TestClass1 私有虚继承类 TestClass0”。在 C+中声明一个派生类时将基类的继承方式指定为 private 的,称为私有继承。同(1),声明 TestClass1 虚继承类“:virtualTestClass0”,题目要求为私有,即“class TestClass1:virtualprivate TestClass0”。 (3)题目 3 要求“类 TestClass2 公有继承类 TestClass0。”同(2),公有继承是在定义一个派生类时将基类的继承方式指定为 public 的,称为公用继承。所以这里补全“classTestClass2:Public TestClass0”。(4)题目 4 要求“类 TestClass3 公有继承类 TestClass2 与 TestClass1。”同(3),所以这里补全“class TestClass3:public TestClass2,public TestClass 1”。