国家二级C++机试(操作题)模拟试卷541
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为:
OK
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include<iostream.h>
2 class CBase
3 {
4 public:
5 CBase()
6 {
7 a=b=0;
8 }
9 private:
10 int a,b;
11 };
12 class CDerive1:public CBase
13 {
14 public:
15 CDerivel()
16 {
17 }
18 //******error******
19 virtual void func();
20 };
21 class CDerive2:public CDerive1
22 {
23 public:
24 CDerive2()
25 {
26 a=0;
27 b=0;
28 }
29 void func()
30 {
31 //******error******
32 cout<<’’OK’’<end1;
33 }
34 private:
35 int a;
36 int b;
37 };
38 void main()
39 {
40 CDerive2 obj;
41 //******error******
42 CDerive1 *p =(CDerivel*)obj;
43 p->func();
44 }
(1)virtual void func()=0;
(2)cout<<’’OK’’<<end1;
(3)CDerivel *p=(CDerive1 *) &obj;
解析:程序中定义了类CBase、CDerive1和CDerive2,类CDerive1公有派生于类CBase,CDerive2公有派生于类CDerive1,在类CDerive1中定义了虚函数func(),但是没有给出具体实现,派生类CDerive2中给出了func()函数的具体实现,因此CDerive1类中的func()函数是纯虚函数。
(1)由审题分析可知,CDerive1类中的func()函数是纯虚函数,纯虚函数的定义格式为:virtual<函数类型><函数名>(<参数表>)=0,因此第1个标识下应为“virtual void func()=0;”。func()函数没有参数表。
(2)编译程序后发现第2个标识下有错误,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,应改成“cout<<\\
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数func(int d[],int n)的功能是将长度为num的数组d的每一个数字是奇数的扩大l倍,并存储到数组d中。
例如:1 2 3 4 5 6 7 8 9
返回:2 2 6 4 10 6 14 8 18
将fune(int d[],mt num)补充完整。
注意:请勿改动主函数。
1 #include<iostream.h>
2 void func(int d[],int num)
3 {
4
5 }
6 int main()
7 {
8 int Data[]={1,2,3,4,5,6,7,8,9};
9 func(Data,9);
10 for(int i=0,i<sizeof(Data)/sizeof(int);i++)
11 {
12 cout<<Data[i]<<’ ’;
13 }
14 cout<<end1;
15 return 0;
16 }
1 for(int i=0;i<num;i++)
2 {
3 if(d[i]%2!=0)
4 d[i]=2*d[i];
5 }
解析:函数func(int d[],int n)功能是将长度为num的数组d的每一个数字是奇数的扩大1倍,并存储到数组d中,因此可利用循环来查找该数组,如果该元素为奇数则变为原来的两倍。
(1)由审题分析可知,利用循环来逐个判断d[]中的元素,d[]中元素个数为num,因此循环变量从0变化至num。
(2)在循环内,用if判断该元素是不是奇数,即if(d[i]%2!=0),将满足条件的d[i]扩大一倍。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)完成CMyClass的构造函数,请改正注释//********1********后的错误。
(2)完成func()函数定义,请改正注释//********2********的错误。
(3)初始化CmyClass的成员变量Number3为4,请改正注释//********3********后的错误。
(4)完成func()函数,请改正注释//********4********后的错误。
输出的结果为:
Number1=12
Number2=18
Number3=16
Number1=4
Number2=2
Number3=19
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include<iostream.h>
2 class CMyClass
3 {
4 public:
5 //********1********
6 CMyClass(int i,int j)
7 {
8 Number1=i;
9 Number3+=i;
10 }
11 void display()
12 {
13 cout<<’’Number1=’’<<Number1<<end1;
14 cout<<’’Number2=’’<<Number2<<end1;
15 cout<<’’Number3=’’<<Number3<<end
本文档预览:3600字符,共5322字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载