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

news2024/11/28 11:00:02

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

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

CP4_2_1. 下列有关面向对象程序设计的叙述中,不正确的是(  )。

A.面向对象程序设计中的类,是具有相同属性和行为的对象的抽象

B.封装、继承、多态是面向对象程序设计的基本特点

C.在面向对象程序设计中,程序的模块是由类组成的

D.在面向对象程序设计中,将属性和方法封装起来,使外界无法访问

CP4_2_2.若有如下类A的定义,则下列有关类成员访问权限的叙述中,正确的是(  )。

class A

{

    int a;

private:

    int b;

public:

    int c;

};

A.在类A的成员函数成员中才能访数据成员b,可以在任何地方访问数据成员a

B.在类A的成员函数成员中才能访数据成员a,可以在任何地方访问数据成员b

C.在类A的成员函数成员中才能访数据成员a,可以在任何地方访问数据成员c

D.在类A的成员函数成员中才能访数据成员c,可以在任何地方访问数据成员a

CP4_2_3.下列有关类与对象的关系叙述中,不正确的是(  )。

A.同一个类的不同对象,具有相同的数据成员和成员函数

B.同一个类的不同对象,它们的属性值可以是不同的

C.同一个类的不同对象,它们的属性值必须是相同的

D.在创建对象时,可以通过构造函数为对象的属性初始化

CP4_2_4.下列有关构造函数与析构函数的叙述中,不正确的是(  )。  

A创建对象时,会自动调用构造函数

B创建对象时,如果没有提供实参,则不会调用构造函数

C.对象删除时,会自动调用析构函数

D.析构函数不能重载

CP4_2_5.下列有关复制构造函数的叙述中,不正确的是(  )。。

A.如果一个类没有定义复制构造函数时,系统将自动提供一个默认的复制构造函数

B.一个类只能有一个复制构造函数

C.复制构造函数的参数是该类对象的引用

D复制构造函数的名字不能用类名

CP4_2_6.执行下列代码,运行结果是(  )。  

#include <iostream>

#include <cmath>

using namespace std;

class Point

{

private:

    int x;

    int y;

public:

    Point(int x, int y){

        this->x=x;

        this->y=y;

    }

    int getX(){

        return x;

    }

    int getY(){

        return y;

    }

};

double dist(Point start, Point end){

    int x = end.getX()-start.getX();

    int y = end.getY()-start.getY();

    return sqrt(x*x+y*y);

}

int main(){

    Point p1(1,2),p2(4,6);

    cout << dist(p1,p2) << endl;

    return 0;

}

A3

B.4

C.5

D6

CP4_2_7.执行下列代码,运行结果是(  

#include <iostream>

using namespace std;

class Point

{

private:

    int x;

    int y;

public:

    Point(int x=0, int y=0){

        this->x=x;

        this->y=y;

    }

    void output(){

        cout << "(" << x << "," << y << ")  ";

    }

};

int main(){

    Point p[] = {Point(),Point(1),Point(2,3)};

    p[0].output();

    p[1].output();

    p[2].output();

    cout << endl;

    return 0;

}

A(0,0)  (1,0)  (2,3)

B.(0,0)  (0,1)  (2,3)

C.(0,0)  (1,0)  (0,3)

D(0,0)  (1,0)  (2,0)

CP4_2_8.执行下列代码,运行结果是(  )

#include <iostream>

using namespace std;

class Point

{

private:

    int x;

    int y;

public:

    Point(int x=0, int y=0){

        this->x=x;

        this->y=y;

    }

    void output(){

        cout << "(" << x << "," << y << ")  ";

    }

};

class Circle

{

private:

    int radius;

    Point center;

public:

    Circle(int x=0, int y=0, int radius=10):center(x,y){

        this->radius = radius;

    }

    void output(){

        center.output();

        cout <<  radius << "   ";

    }

};

int main(){

    Circle c1;

    Circle c2(5,6,20);

    c1.output();

    c2.output();

    cout << endl;

    return 0;

}

A(0,0)   0   (0,0)  0

B.(0,0)  10   (0,0)  20

C.(0,0)  10   (5,6)  0

D(0,0)  10   (5,6)  20

CP4_2_9.下列有关struct和class的叙述中,正确的是(  )。

A.struct和class完全相同

B.struct只能有数据成员,class既可以有数据成员,也可以有函数成员

C.struct的默认访问权限是public,class的默认访问权限是private

D.struct的默认访问权限是private,class的默认访问权限是public

CP4_2_10.下列有关对静态数据成员的叙述中,正确的是(  )。

A.静态数据成员应该在构造函数中初始化

B.无论创建多少个对象,静态数据成员只有一个副本

C.公有的静态数据成员可以用类名调用,不能用对象调用

D.公有的静态数据成员可以用对象调用,不能用类名调用

CP4_2_11. 执行下列代码,运行结果是(  )。

#include <iostream>

using namespace std;

class A

{

private:

    static int count;

public:

    A(){

        ++count;

    }

    ~A(){

        --count;

    }

    static int getCount(){

        return count;

    }

};

int A::count = 0;

int main(){

    A s1;

    A *p;

    cout << A::getCount() << "  ";

    p = new A();

    cout << A::getCount() << "  " << p->getCount()<<"  ";

    delete p;

    cout << A::getCount() << endl;

    return 0;

}

A.1  2  2  1

B.1  2  1  1

C.1  2  2  2

D.1  2  1  2

CP4_2_12.下列代码要输出圆的面积314,则//(1)处需要填写的语句是(  )

#include <iostream>

using namespace std;

class Circle

{

private:

    int radius;

public:

    Circle(int radius=10){

        this->radius = radius;

    }

    //(1);

};

double getArea(Circle c){

    return 3.14 * c.radius * c.radius;

}

int main(){

    Circle c(10);

    cout << getArea(c)<< endl;

    return 0;

}

A.double getArea(Circle c);

B.friend double getArea(Circle c);

C.double getArea();

D.friend double getArea();

CP4_2_13.将A类的成员函数fun()声明为B类的友元函数,则以下叙述中,正确的是(  )。

A.A类的成员函数fun()可以访问B类的私有成员

B.A类的所有成员函数都可以访问B类的私有成员

C.B类的所有成员函数都可以访问A类的成员函数fun()

D.A类的成员函数fun()只能访问B类的同名成员函数fun()

CP4_2_14.将A类声明为B类的友元类,则以下叙述中,正确的是(  )。

A.B类的成员函数可以访问A类的私有成员

B.A类的成员函数可以访问B类的私有成员

C.A类的成员函数可以访问B类的私有成员,B类的成员函数也可以访问A类的私有成员

D.B类也是A类的友元类

CP4_2_15.下列对语句“vector<int> v(5); ”的叙述中,正确的是(  )

A.向量v有1个元素,值是5

B.向量v有5个元素,每个元素的值都是5

C.向量v有5个元素,每个元素的值都是0

D.向量v有5个元素,每个元素的值是不确定的

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

CP4_2_16.下列有关构造函数和虚构函数的叙述中,正确的有(  )。

A.类可以有多个构造函数,但只能有一个析构函数

B.构造函数必须与类同名

C.析构函数不能有参数

D.析构函数可以重载

CP4_2_17.以下代码定义了类A和类B,在创建B类的对象时,下列叙述不正确的有(  )。

class A

{

private:

    int  i;

public:

    A(int i=10) {  this->i  = i;  }

};

class B

{

private:

    int j;

    A a1;

    A a2;

public:

    B(int j=0){   this->j= j;  }

};

A.创建类B的对象时,先构造内嵌对象a1,后构造内嵌对象a2

B.创建类B的对象时,先执行类B的构造函数,后构造内嵌对象

C.创建类B的对象时,先构造内嵌对象,后执行类B的构造函数

D.创建类B的对象时,不构造内嵌对象,只执行类B的构造函数

CP4_2_18.下列有关类的静态成员的叙述中,正确的有(  )。

A.类的静态成员函数没有this指针

B.类的静态成员函数只能调用类的静态成员函数及访问类的静态数据成员

C.类的静态数据成员只能被类的静态成员函数访问

D.类的静态数据成员可以被类的普通成员函数访问

CP4_2_19.下列有关友元的叙述中,正确的有(  )。

A.友元函数不是类的成员函数,但可以访问该类的私有成员

B.如果类A是类B的友元类,类B是类C的友元类,则类A也是类C的友元类

C.友元关系是不能继承的

D.如果类A是类B的友元类,则类A的所有成员函数都是B类的友元函数

CP4_2_20.下列有关运算符重载的叙述中,不正确的有(  )。

A.运算符可以重载为类的成员函数或重载为类的友元函数

B.运算符重载为类的成员函数,函数的参数个数与运算符的操作数个数相同

C.C++中的所有运算符都是可以重载的

D.运算符重载,不能改变运算符的操作数的个数

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

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

用户输入线段的起点和终点坐标,通过类的定义和计算,求线段的长度。如(x1,y1),(x2,y2)分别是线段的起点和终点,则计算线段的长度公式是:

说明

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

#include <iostream>

#include <cmath>

using namespace std;

class Line

{

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

    

    

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

private:

    int startx,starty,endx, endy;

};

int main(){

    int  startx,starty,endx, endy;   //线段的起点和终点坐标

    double length;   //线段的长度

    cin >> startx >> starty >> endx >> endy;   //输入起点和终点坐标

    Line l(startx, starty, endx, endy);

    length = l.getLength();  

    cout <<  length << endl;

    return 0;

}

样例1:

输入:10 20 7 16

输出:5

样例2: 

输入:0 0 10 10

输出:14.1421

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

通过类的静态成员实现计数统计。用户输入学生人数n(n≤10)以及n个学生的学号和性别。输出男生总数和女生总数。

说明:

(1)本程序中,学号为正整数,性别为字符,’m’表示男,’f’表示女;

(2)假设输入的数据(学生人数,学号,性别)都在规定的范围内,不要求程序对输入的数据进行合法性检查。

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

#include <iostream>

using namespace std;

class Student

{

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

    

    

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

};

int Student::boyStudentCount=0;  //初始化类 Student 的静态成员

int Student::girlStudentCount=0;  //初始化类 Student 的静态成员

int main(){

    Student *s[10];

    int n, num;         // n表示学生的数量,num表示学生的学号

    char gender;       // gender表示学生的性别

    cin >> n;         // 输入学生数量, 小于等于10

    for(int i=0;i<n;i++){

       cin>>num>>gender;

       s[i]=new Student(num,gender);

   }

   cout << Student::getBoyStudentCount() << " ";  //男生总数

   cout << Student::getGirlStudentCount() << endl;  //女生总数

   return 0;

}

样例1:

输入:3

      101 m

      102 f

      103 m

输出:2 1

样例2:

输入:2

      101 f

      102 f

输出:0 2

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

定义矩形Rect类,通过重载运算符“<”和“>”,使之能实现两个矩形大小的比较。用户输入两个矩形的宽和高,输出两个矩形的面积以及两个矩形比较的结果(比较结果为真输出1,比较结果为假输出0)。

说明:

(1)本程序中,矩形的宽和高均为实数;

(2)两个矩形大小的比较规则是:面积大的矩形为大,面积小的矩形为小;

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

#include <iostream>

using namespace std;

class Rect

{

private:

    double width;

    double height;

public:

    Rect(double width=0, double height=0)

    {

        this->width  = width;

        this->height = height;

    }

    double area() const {

        return width * height;

}

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

    //运算符重载函数的声明

    

    

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

};

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

//运算符重载函数的定义

    

    

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

int main()

{

    double  w1,h1,w2,h2;  //分别表示两个矩形的宽和高

    cin>>w1>>h1;        //输入第一个矩形的宽和高

    cin>>w2>>h2;        //输入第二个矩形的宽和高

    Rect r1(w1,h1);       //创建矩形对象r1

    Rect r2(w2,h2);       //创建矩形对象r2

    cout << r1.area() << " ";    //显示矩形r1的面积

    cout << r2.area() << endl;   //显示矩形r2的面积

    cout << (r1<r2) << " ";     // 输出两个矩形的比较结果

    cout << (r1>r2) << endl;    // 输出两个矩形的比较结果

    return 0;

}

样例1:

输入:10 20 30 40

输出:200 1200

1 0

样例2:

输入:10.5 8.2 6.5 4.4

输出:86.1 28.6

0 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

__桥接模式

在C#中 初始版本 namespace _013_桥接模式 {/// <summary>/// 玩家抽象类/// </summary>public abstract class AbstractPlayer{protected IWeapon _weapon;//武器引用public void SetWeapon(IWeapon weapon){_weapon weapon;}//抽象方法使用武器public abstract…

Windows下Python3.8环境快速安装部署

为了帮助非python计算机软件开发人员快速上手使用python环境&#xff0c;我准备好了的Python 3.8免安装环境&#xff0c;并安装Jupyter Notebook以进行Python学习&#xff0c;以下是一个简单易懂的教程。请按照以下步骤操作&#xff1a; 步骤 1: 解压Python环境 下载并解压&a…

药智网数据库和摩熵医药数据库哪个好?

药智和摩熵医药(原药融云)作为医药行业内专业的医药数据库平台&#xff0c;它们各自在行业内占据着重要的地位&#xff0c;并且都在不断地创新和完善自己的数据库服务&#xff0c;以满足行业日益增长的需求为医药行业的数据服务、决策支持、研发分析等方面提供支持。. 但让大家…

java拆分地址中的省市县区,全国地址通用

package com.sure;import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * description: 拆分地址工具类 * fileName: AddressResolutionUtil.ja…

QExcel 保存数据 (QtXlsxWriter库 编译)

QtXlsxWriter 是一个用于在 Qt 应用程序中创建和操作 Excel XLSX 文件的库。它提供了一个简单的 API&#xff0c;使开发者能够轻松地生成和修改 Excel 文件&#xff0c;而无需依赖 Microsoft Excel 或其他外部应用程序。支持初始化、写文件、读文件、格式设置、合并单元格、加粗…

运维管理软件:如何引领一体化自动运维

在数字化转型的洪流中&#xff0c;运维团队正面临着前所未有的挑战与机遇。随着企业业务规模的不断扩大&#xff0c;IT架构的日益复杂&#xff0c;如何确保服务的连续性、稳定性和高效性&#xff0c;成为了运维团队亟待解决的核心问题。在此背景下&#xff0c;监控易运维管理软…

使用皮尔逊相关系数矩阵进行特征筛选

皮尔逊相关系数矩阵是一个用于量化多个变量之间线性关系的统计工具。它的每个元素表示两个变量之间的皮尔逊相关系数&#xff0c;取值范围从 -1 到 1&#xff1a; 1 表示完全正相关&#xff1a;当一个变量增加时&#xff0c;另一个变量也会增加。-1 表示完全负相关&#xff1a…

#每日一题#自动化 2024年10月

#每日一题#自动化 2024年10月 1、深拷贝和浅拷贝的区别是什么&#xff1f; 参考答案&#xff1a; 深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中&#xff0c;我们使用 deepcopy&#xff08;&#xff09;函数进行深拷贝…

Debezium和SeaTunnel实现MySQL到Hadoop的实时数据流和全量同步(基于尚硅谷的集群环境)

1、hadoop集群连接本地MySQL 1.1 首先测试集群是否可以ping通本地 虚拟机可以ping通网关&#xff08;192.168.10.2&#xff09;&#xff0c;但不能ping通192.168.10.1&#xff0c;这表明问题可能出在Windows主机的防火墙设置或VMware的网络配置上。 1.1.1 检查Windows防火墙…

个人信息窗口(三)

个人信息窗口&#xff08;三&#xff09; 前言 在上一集我们就可以显示我们就可以全部显示所有的未隐藏的组件了&#xff0c;但是隐藏的组件我们还没有蛆完成&#xff0c;所以我们这一集就需要去做隐藏组件的显示&#xff0c;以及如何切换到隐藏的组件的功能。 需求分析并实…

centos7 nginx优化

优化nginx进程个数的策略 在高并发、高访问量的web服务场景&#xff0c;需要事先启动好更多的nginx进程&#xff0c;以保证快速响应并处理大量并发用户的请求。worker_processes 1;一般调整到与CPU的颗数相同查看LInux可查看CPU个数及总核数grep processor /proc/cpuinfo|wc …

开放式耳机排行榜前十名,开放式耳机全价位段盘点

关于开放式蓝牙耳机的品牌选择&#xff0c;这是一个常见的问题。因为市面上的蓝牙耳机种类繁多&#xff0c;各种样式和类型层出不穷&#xff0c;让许多消费者感到困惑&#xff0c;不知道如何选择一款适合自己的蓝牙耳机。一款好的蓝牙耳机不仅需要音质好、配置高&#xff0c;还…

计算机毕业设计hadoop+spark知识图谱中药推荐系统 中药材推荐系统 中药可视化 中药数据分析 中药爬虫 机器学习 深度学习 人工智能 大数据

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 摘 要 本文所探讨的领域是…

深度学习-2:数据向量化

向量化 在逻辑回归中&#xff0c;x,w,b都是列向量&#xff0c;若要计算w.T*xb&#xff0c;不向量化的话就需要for循环计算起来很麻烦 向量化后&#xff0c;使用numpy.dot(w,x)函数即可快速计算 逻辑回归向量化

接口测试(六)jmeter——参数化(配置元件 --> 用户定义的变量)

一、jmeter——参数化&#xff08;配置元件 --> 用户定义的变量&#xff09; 注&#xff1a;示例仅供参考 1. 参数化格式&#xff1a;${变量名} 2. 配置元件&#xff1a;用户定义的变量 3. 添加【用户定义的变量】&#xff0c;【线程组】–>【添加】–>【配置元件】–…

手持无人机飞手执照,会组装调试入伍当兵有多香!

手持无人机飞手执照&#xff0c;并具备组装调试技能&#xff0c;在入伍当兵时确实会具有显著的优势和吸引力。以下是对这一情况的详细分析&#xff1a; 一、无人机飞手执照的优势 1. 法规遵从与安全保障&#xff1a; 根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关…

深入浅出 Vue3 nextTick

程序员节日快乐~ #1024程序员节 | 征文# nextTick 概念 当你在 Vue 的响应式数据模型中对数据进行修改时&#xff0c;这些变化并不会立即同步到 DOM 上_&#xff0c;而是会在当前的微任务队列&#xff08;microtask queue&#xff09;执行完毕后进行批量更新。这种机制被称为…

【宝塔面板】轻松使用docker搭建lobe-chat项目(AI对话)

我们的目的&#xff1a;就是下面的这个玩意&#xff1a; 主要也就三步 1、创建容器编排模版 2、创建容器 3、配置 第一步&#xff1a;创建编排模版 代码我放下面了&#xff1a;&#xff08;你要记住这里开放的是3210端口&#xff09; # https://github.com/lobehub/lobe-ch…

Spring Boot驱动的植物健康监测革命

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

Linux Redis查询key与移除日常操作

维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间&#xff08;建议设置过期时间&#xff0c;毕竟登录生产服务器并不是每个人都有权限登录的&#xff01;&#xff01;&#xff01;&#xff09;。如果变动只能通过登录生产服务器、手动修改… 于…