青少年编程能力等级测评CPA C++五级试卷(1)

青少年编程能力等级测评CPA C++五级试卷(1)

一、单项选择题(共15题,每题3分,共45分)

CP5_1_1.下列有关类的重用意义的叙述中,不正确的是( )。

A.类的重用有利于代码结构的维护

B.类的重用有利于减少代码的冗余

C.类的重用有利于提升程序的执行效率

D.类的重用有利于提升程序的可扩展性和灵活性

CP5_1_2.类的组合,其核心特征是( )。

A.一个类内嵌其他类作为成员

B.一个类内嵌其他类的私有成员作为成员

C.一个类内嵌其他类的保护成员作为成员

D.一个类内嵌其他类的对象作为成员

CP5_1_3.执行下列代码,输出结果是( )。

#include <iostream>

using namespace std;

class Point {

public:

Point(int a) :x(a+1) {};

void print() {

cout << "x:" << x <<" ";

}

private:

int x;

};

Point& re_p(int a) {

Point* res = new Point(a+1);

res->print();

return *res;

}

int main(){

Point& a = re_p(2);

a.print();

return 0;

}

A.x:2 x:2

B.x:2 x:3

C.x:3 x:4

D.x:4 x:4

CP5_1_4.执行下列代码,输出结果是( )。

#include <iostream>

using namespace std;

class B;

class A {

public:

char ia;

A() {ia = 'A';}

B *b;

};

class B {

public:

char ib;

B() {ib = 'B';}

A oa;

};

int main() {

A t1;

t1.b = new B();

B t2;

cout << t1.ia <<t1.b->ib;

cout << t2.ib<<t2.oa.ia<<endl;

return 0;

}

A.ABBA

B.AABB

C.BBAA

D.BAAB

CP5_1_5.在C++中,类的默认继承方式是( )。

A.公有继承

B.私有继承

C.保护继承

D.多态继承

CP5_1_6.执行下列代码,输出结果是( )。

#include <iostream>

using namespace std;

class Person{

public:

void Print(){cout<<'P';}

void Output(){cout<<1;}

virtual ~Person(){cout<<3; }

};

class Tom:public Person{

public:

void Print(){cout<<'T';}

};

int main(){

Tom a;

a.Output();

a.Print();

return 0;

}

A.1T

B.1P

C.1T3

D.1P3

CP5_1_7.在公有继承的情况下,允许派生类中新定义的成员函数直接访问的基类成员是( )。

A.公有成员和保护成员

B.公有成员

C.保护成员和私有成员

D.公有成员、保护成员和私有成员

CP5_1_8.有如下类的声明,则在创建一个类 C 的对象时,输出的信息是( )。

class A{

public:

A(){ cout<<'A';}

};

class B{

public:

B(){ cout<<'B';}

A aa;

};

class C:public B{

public:

C(){ cout<<'C'; }

};

A.ABC

B.BAC

C.BCA

D.CBA

CP5_1_9.C++要实现运行时多态性,需使用的是( )。

A.构造函数

B.析构函数

C.虚函数

D.重载函数

CP5_1_10.有如下类声明,则下列叙述正确的是( )。

class A{

public:

virtual void fun1(){}

void fun2(){}

};

class B:public A{

public:

virtual void fun2(){cout <<"fun2";}

void fun1(){cout<<"fun1";}

};

A. A::fun2()和B::fun1()都不是虚函数

B. A::fun2()和B::fun1()都是虚函数

C. A::fun2()是虚函数,而B::fun1()不是虚函数

D. A::fun2()不是虚函数,而B::fun1()是虚函数

CP5_1_11.下列关于模板的叙述中,错误的是( )。

A.模板形参只能由关键字 typename 声明

B.函数模板中可能含有虚拟类型参数

C.类模板的成员函数都是模板函数

D.满足一定条件时可以省略模板实参

CP5_1_12.下列代码是函数模板声明及变量定义,则下列调用语句错误的是( )。

template <class T1, class T2, class T3> T1 sum(T2,T3);

double d1,d2;

A.sum<double,double>(d1,d2);

B.sum<double>(d1,d2);

C.sum<double,double,double>(d1,d2);

D.sum(d1,d2);

CP5_1_13.下列有关类模板的叙述中,错误的是( )。

A.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

B.可以为类模板参数设置默认值

C.类模板描述了一组类

D.一个类模板中只允许有一个类型参数

CP5_1_14.运行下列代码,若能够输出3.8,则****/**(1)**/****处应填写的语句是( )。

#include<iostream>

using namespace std;

template <class T>

class A{

private:

T a1,a2;

public:

A(T aa1,T aa2){

a1=aa1;

a2=aa2;

}

T add(){

T sum;

sum=a1+a2;

return sum;

}

};

int main(){

/**(1)**/

cout<<a.add()<<endl;

return 0;

}

A. A a(1.5,2.3);

B. A<double> a(1.5,2.3);

C. <double> A a(1.5,2.3);

D. double A a(1.5,2.3);

CP5_1_15.STL引入C++后,新增的编程模式是( )。

A.泛型程序设计

B.面向过程程序设计

C.数据抽象程序设计

D.面向对象程序设计

二、多项选择题(共5题,每题2分,共10分)

CP5_1_16.下列有关类的组合和继承的叙述中,正确的有( )。

A.组合和继承都是类重用的实现方法之一

B.类的组合,整体类自动获得局部类的全部接口

C.类的继承,子类可自动继承父类的接口

D.组合关系和继承均破坏了类的封装性

CP5_1_17.下列有关派生类的叙述中,正确的有( )。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类只继承了基类的公有成员和保护成员

D.派生类默认的继承方式是private

CP5_1_18.执行下列代码,若输出结果为:"2023-3-20",则/***code***/处可以填写的代码有( )。

#include<iostream>

#include<string>

using namespace std;

class Date{

protected:

int day,month,year;

public:

Date(int day,int month,int year){

this->day=day;

this->month=month;

this->year=year;

}

friend ostream& operator<<(ostream &os,const Date &d);

};

ostream& operator<<(ostream &os,const Date &d){

cout<<d.year<<"-"<<d.month<<"-"<<d.day<<endl;

return os;

}

int main(){

/***code***/

cout<<d<<endl;

}

A.string d="2023-3-20";

B.string d="2023,3,20";

C.Date d(20,3,2023);

D.Date d(20.,3.,2020.);

CP5_1_19.设有如下模板定义,则对func的调用,正确的有( )。

Template <class T>

T func(T x ,T y) {return x*x+y*y;}

A. func(3,5)

B. func<>(3,5)

C. func(3,5.5)

D. func<int>(3,5.5)

CP5_1_20.下列基本容器,属于STL标准模板库中关联容器的有( )。

A.双端队列

B.集合

C.单向链表

D.映射

三、编程题(共3题,每题15分,共45分)

CP5_1_21.编写程序实现如下功能:

通过定义组合类,输入平面直角坐标系上的一个坐标点(x,y),求该坐标点到坐标原点的距离。

说明:

(1)定义坐标点是Point类对象。使用Dis()函数获得坐标点到圆心的距离。点到圆心间的距离公式:

(2)编程过程中对于程序给定的部分不允许修改,考生仅允许在/****code****/提示行区间内作答。

#include <iostream>

#include <cmath>

using namespace std;

class Point{ //坐标点

/*********code*********/

/************code***********/

};

class Distance{ //坐标点到圆心的距离

/***************code****************/

/****************code**************/

private:

Point t; //组合类成员

};

int main()

{

float x,y;

cin>>x>>y;

Distance D;

cout << "Distance="<<D.Dis(x,y)<<endl;

return 0;

}

样例1:

输入:1 1

输出:Distance=1.41421

样例 2

输入:-3 -4

输出:Distance=5

CP5_1_22.编写程序实现如下功能:

输入圆的半径,求球体表面积及体积。球体看作由圆继承而来,定义圆类Circle作为基类,Sphere类为派生类。在派生类中对虚函数area()和volume()重新定义,求球体的表面积和体积。

说明:

(1)球体表面积=4*π*r2 ; 球体体积=4/3*(π*r3)。

(2)编程过程中对于程序给定的部分不允许修改,考生仅允许在/****code****/提示行区间内作答。

#include <iostream>

using namespace std;

const double PI=3.14;

class Circle{

//基类:定义一个数据成员radius作为半径,两个虚函数area()和volume()

/************code************/

/****************code************/

};

class Sphere:public Circle{

//派生类Sphere 求圆的表面积和体积

/*************code****************/

/**************code****************/

};

int main(){

double r;

cin>>r;

Sphere s(r);

cout <<s.area() << endl;

cout << s.volume() << endl;

return 0;

}

样例1:

输入:1.0

输出:12.56

4.18667

样例 2

输入:2.5

输出:78.5

65.4167

CP5_1_23.编写程序实现如下功能:

通过编写函数模板,实现求解3个数值从小到大的排序。3个值可以是整型、浮点型或者字符型。

说明:编程过程中对于程序给定的部分不允许修改,考生仅允许在/****code****/提示行区间内作答。

#include <iostream>

using namespace std;

template <class T>

/****************code****************/

/***************code*****************/

int main(){

int Int[3],m=0;

char Char[4]="";

double Double[3];

//输入一个整数:1代表整数排序;2代表字符排序;3代表浮点数排序

cin>>m;

switch(m)

{case 1: cin>>Int[0]>>Int[1]>>Int[2];

MinToMax(Int);

break;

case 2: cin>>Char[0]>>Char[1]>>Char[2];

MinToMax(Char);

break;

case 3: cin>>Double[0]>>Double[1]>>Double[2];

MinToMax(Double);

break;

default: return 0;

}

return 0;

}

样例1:

输入:1

12 2 -9

输出:-9 2 12

样例 2

输入:2

D e C

输出:C D e

样例3:

输入:3

2.3 4.5 1.2

输出:1.2 2.3 4.5

相关推荐
一个小坑货2 分钟前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet276 分钟前
【Rust练习】22.HashMap
开发语言·后端·rust
古月居GYH6 分钟前
在C++上实现反射用法
java·开发语言·c++
Betty’s Sweet9 分钟前
[C++]:IO流
c++·文件·fstream·sstream·iostream
敲上瘾23 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
不会写代码的ys29 分钟前
【类与对象】--对象之舞,类之华章,共绘C++之美
c++
兵哥工控32 分钟前
MFC工控项目实例三十二模拟量校正值添加修改删除
c++·mfc
在下不上天32 分钟前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
长弓聊编程41 分钟前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
陌小呆^O^1 小时前
Cmakelist.txt之win-c-udp-client
c语言·开发语言·udp