国家二级C++机试(操作题)模拟试卷662
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,其中在编辑窗口内显示的主程序文件中定义有类ABC和主函数main。程序文本中位于每行“//ERROR*******found*******”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:
21 23
注意:只修改每个“//ERROR *******found*******”下面的一行,不要改动程序中的其他任何内容。
#include<iostream>
using namespace std;
class ABC{
public:
//ERROR *******found*******
ABC(){a=0;b=0;c=0;)
ABC(int aa,int bb,int CC);
void Setab(){++a,++b;)
int Sum()(return a+b+c;}
private:
int a,b;
const int C;
};
ABC::ABC(int aa,int bb,int CC):C(CC){a=aa;b=bb;}
int main()
{
ABC x(1,2,3),y(4,5,6);
ABC z,*w=&z;
w一>Setab();
//ERROR *******found*******
int s1=x.Sum()+y一>Sum();
cout<<s1<<”;
//ERROR *******found*******
int a2=s1+w.Sum(),
cout<<s2<<endl:
return 0;
}
(1)ABC(): a(0),b(0),c(0){ }
(2)int s1 =x.Sum()+y.Sum();
(3)int s2 =s1 + w->Sum();
解析:(1)主要考查考生对构造函数的掌握情况,根据私有成员的定义:const int c;,可知,c为常变量,因此构造函数必须使用成员列表初始化来给c赋初始值。
(2)主要考查考生对类的指针的掌握情况,根据主函数的第一条语句:ABCx(1,2.3),y(4,5,6);可知,x和y都是ABC类,但不是指针,因此它们调用ABC类的成员函数要使用标识符’.而不是’>’。
(3)主要考查考生对类的指针的掌握情况,根据主函数的第二条语句:ABC z,*w=&z;可知,w是ABC类的指针,指向z,因此w调用ABC类的成员函数时要使用标识符’>’,而不是.。
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,其中在编辑窗口内显示的主程序文件中定义有类Base和Derived,以及主函数main。程序文本中位于每行“//*******found*******”下面的一行内有一处或多处下画线标记,请在每个下画线标记处填写合适的内容,并删除下画线标记。经修改后运行程序,得到的输出应为:
sum=55。
注意:只在横线处填写适当的代码,不要改动程序中的其他内容。
#include<iostreara>
using namespace std;
class Base
{
public:
Base(int m1,int m2){
mem1=m1; mem2=m2;
}
int SLIm(){return mem1+merm2;)
private:
int meml,mem2;//基类的数据成员
};
//派生类Derived从基类Base公有继承
//*******found*******
class Derirved:
{
public:
//构造函数声明
Derived(int m1,int m2,int m3);
//sum函数定义,要求返回mem1、mem2和mem3之和
//*******found*******
int sLIm(){return________+mem3;}
prirate:
int mem3; //派生类本身的数据成员
};
//构造函数的类外定义,要求由m1和m2分别初始化mem1和mera2.由m3初始化mem3
//*******found*******
________Derived(int m1,intm2,int m3):
//*******found*******
________,mem3(m3){ }
int main(){
Base a(4,6);
Derived b(10,15,20);
int sum=a.sum()+b.SHill();
cout<<”sum=”<<sum<<endl;
return 0;
}
(1)public Base
(2)Base::sum()
(3)Derived::
(4)Base(m1,m2)
解析:(1)主要考查考生对公有继承的掌握情况,根据题目要求:派生类Derived从基类Base公有继承。因此在这里使用public来公有继承。
(2)主要考查考生对成员函数的掌握情况,根据题目对sum函数的要求:sum函数定义,要求返回mem1、mem2和mem3之和。因此这里直接调用基类的sum函数,再加上mem3就满足题目要求。
(3)主要考查考生对构造函数的掌握情况,由于Derived的构造函数在类外定义,因此要加上类名和作用域符,即:Derived::。
(4)主要考查考生对构造函数的掌握情况,因为Derived是Base类的派生类,所以其构造函数要使用成员列表初始化先给Base初始化。
综合应用题
3.请打开考生文件夹下的解决方案文件proj3,其中包含主程序文件main.cpp和用户定义的头文件Array,h,整个程序包含有类Array的定义和主函数main的定义。请把主程序文件中的Array类的成员函数Contrary()的定义补充完整,经补充后运行程序,得到的输出结果应该是:
5 8
5,4,3,2,1
0,0,8.4,5.6,4.5,3.4,2.3,1.2
注意:只允许在“//*******found*******”和“//*******found*******”之间填写内容,不允许修改其他任何地方的内容。
//Array.h
#include<iostream>
using namespace std;
template<class Type,int m>
class Array{//数组类
public:
Array(Type b[ ],int mm)(
//构造函数
for(int i=0;i<m;i++)
if(i<nu
本文档预览:3600字符,共5043字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载