2020年全国计算机等级考试二级c++上机题库(3)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
2

使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。

 (1)在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx,double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释“//**1**”之后添加适当的语句。

 (2)在类体中添加函数move(double ax,double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释“// **2**”之后添加适当的语句。

 (3)完成函数double distance (double bx,double by)的定义,该函数返回*this和点(bx,by)的距离,请在注释“//**3**”之后添加适当的语句。

 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。

 源程序文件test11_3.cpp清单如下:

 #include<iostream.h>

 #include<math.h>

 class CPosition

 {

 public:

   CPosition();

   CPosition(double dx,double dy);

   double getx();

   double gety();

     // ** 2 **

   double distance(double bx,double by);

 private:

   double x;

   double y;

 };

 // ** 1 **

 {

  x=0;y=0;

  }

 CPosition::CPosition(double dx,double dy)

 {

 x=dx;y=dy;

 }

 double CPosition::getx()

 {

 return x;

 }

 double CPosition::gety()

 {

 return y;

 }

 double CPosition::distance(double bx,double by)

 {

    // ** 3 **

 }

 void main()

 {

 double a,b;

 cout << "Input x, y position of a point:";

 cin >> a >> b;

 CPosition psA(a,b);

 cout << “Input x,y position of another point:";

 cin >> a >> b;

 cout << "The distance is " << psA.distance(a,b) <<endl;

 }

3

与所使用的计算机无关的是数据的

  • A.物理结构
  • B.逻辑结构
  • C.存储结构
  • D.逻辑和物理结构
5

下列重载函数中,正确的是(  )。

  • A.void fun(int a,float b);void fun(int c,float d)
  • B.void fun(int a,float b);void fun(float a,int b)
  • C.float fun(int a,float b);int fun(int b,float a)
  • D.int fun(int a,int b);float fun(int a,int b)
6

若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为

  • A.x.operator/(y)
  • B.operator/(x,y)
  • C.y.operator/(x)
  • D.operator/(y,x)
8

语句int*P=&k;定义了指针P,与这个语句等效的语句序列是(   )。

  • A.int* p;P=&k;
  • B.int * P;P=k;
  • C.int * p;* P=&k;
  • D.int * p;* P=k;
10

下列对字符数组进行初始化中,(  )是正确的。

  • A.char s1[]="abcd";
  • B.char s2[3]="xyz";
  • C.char s3[][]={"a","x", "y");
  • D.char s4 [2][3]={"xyz", "rnnp"};
11

分层DFD图是一种比较严格又易于理解的描绘方式,它的顶层图的作用在于 ______。

  • A.描绘了系统的实现细节
  • B.表明了被开发系统的范围以及它和周围环境的数据交换关系
  • C.描绘了系统的抽象
  • D.描绘了软件实现的作者和绘制的时间
14

下面对结构或类中成员的访问中,不正确的访问是 ______。

  • A.*pointer. salary;(其中pointer为指向类对象的指针)
  • B.pointer->salary;
  • C.x=orker,salary;(其中worker为具有类类型的对象)
  • D.Location &rA=A1;Int x=rA. GetX();(Location为已定义的类,A为对象)
15

关于静态数据成员的描述中正确的是

  • A.类的静态数据成员不是类的所有对象共享的数据
  • B.类的静态数据成员不能被类的成员函数调用
  • C.类的静态数据成员不能被类的构造函数调用
  • D.类的静态数据成员必须进行初始化
17

下列叙述中正确的是

  • A.程序执行的效率与数据的存储结构密切相关
  • B.程序执行的效率只取决于程序的控制结构
  • C.程序执行的效率只取决于所处理的数据量
  • D.以上三种说法都不对
19

下列说法中错误的是(  )

  • A.公有继承时基类中的public成员在派生类中仍是public的
  • B.公有继承时基类中的private成员在派生类中仍public是的
  • C.私有继承时基类中的public成员在派生类中仍private是的
  • D.保护继承时基类中的public成员在派生类中仍protected是的
20

下列字符数组的初始化,正确的是(  )。

  • A.char ch[5]={"a","b","c","d","e"};
  • B.char ch[]={"a","b"};
  • C.char ch[15]={"welcome to china"};
  • D.char ch[14]={"I am a student"};
21

由于常对象不能被更新,因此(   )。

  • A.通过常对象只能调用它的常成员函数
  • B.通过常对象只能调用静态成员函数
  • C.常对象的成员都是常成员
  • D.通过常对象可以调用任何不改变对象值的成员函数
22

重载赋值操作符时,应声明为(  )函数。

  • A.友元
  • B.虚
  • C.成员
  • D.多态
24

当+运算符被重载为友元函数时,友元运算符Obj1+obj2被C++编译器解释为 ______。

  • A.operator+(objl, obj2)
  • B.+(obj1, obj2)
  • C.obj2.operator+(obj1)
  • D.obj1,operator(obj2)
25

在设计程序时,应采纳的原则之一是

  • A.不限制goto语句的使用
  • B.减少或取消注解行
  • C.程序越短越好
  • D.程序结构应有助于读者理解
27

下列关于多态性的描述,错误的是

  • A.C++语言中的多态性分为编译时的多态性和运行时的多态性
  • B.编译时的多态性可通过函数重载实现
  • C.运行时的多态性可通过模板和虚函数实现
  • D.实现运行时多态性的机制称为动态绑定
28

下列叙述中正确的是(  )。

  • A.在面向对象的程序设计中,各个对象之间具有密切的关系
  • B.在面向对象的程序设计中,各个对象都是公用的
  • C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
  • D.上述三种说法都不对
29

在结构化设计方法中生成的结构图(SC) 中,带有箭头的连线表示

  • A.模块之间的调用关系
  • B.程序的组成成份
  • C.控制程序的执行顺序
  • D.数据的流向
30

对于模板定义关键字class和typename说法不正确的是

  • A.程序中的class并不能都替换为typename
  • B.class和typename都可互相替换
  • C.程序中的typename都能替换为class
  • D.程序中的部分class可以替换为typename