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

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

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

CP3_2_1.在宽度为500米的河道上,修建一个拦河大坝。施工队每天筑坝50米,由于当时条件所限,晚上又被河流冲毁15米,求施工队需要几天完成500米的筑坝任务。下列代码实现该功能,则/**(1)**/处需要填写的语句是(  )。

#include <iostream>

using namespace std ;

int main(void) {

    int amount = 0;

    int days = 0;

    while (true) {  

        amount += 50;

        days++;

        if (amount >= 500)

            break;  

        /**(1)**/

    }

    cout << days << endl;  

    return 0;

}

A.amount += 15;

B.amount += 50;

C.amount -= 15;

D.amount -= 50;

CP3_2_2.下列有关穷举算法的叙述中,不正确的是(  )。

A.使用穷举法,必须满足的条件是解的个数有限且可以列举

B.使用穷举法,需确定答案要满足的条件

C.穷举法得到的结果一定是正确的

D.穷举法适用于任何问题

CP3_2_3.有数列1,1/1!,1/2!,1/3!,1/4!,1/5!...(其中n!表示n的阶乘),下列代码计算数列第10项的值,则迭代关系语句是(  )。

#include <iostream>

using namespace std;

int main(){

    int i=1;

    double num=1.0;

    while(i <10){

        num *= 1.0 / i;

        i++;

    }

    cout<<num<<endl;

    return 0;

}

A.double num=1.0;;

B.int i=1;

C.整个while()循环语句

D.num *= 1.0 / i;

CP3_2_4.运行下列代码,输出结果是(  )。

#include <iostream>

using namespace std;

int main( ){

    int a[ ] = {1,2,3,4,5},b[5];

    for(int i = 0;i < 5; i++)

        b[i]=a[i]+a[4-i];

    for(int i=0; i<5; i++)

        cout<<b[i]<< '\t';

    return 0;

}

A.3 3 3 3 3

B.6 6 6 6 6

C.3 5 7 9 6

D.2 4 6 8 10

CP3_2_5.使用选择排序算法(每趟最多交换一次)对一组数“19,28,12,7,66,31,24”进行升序排序,则第三趟结束后,这组数的顺序是(  )。

A.19,28,12,7,66,31,24

B.7,19,12,28,66,31,24

C.7,12,19,24,66,31,28

D.7,12,19,28,66,31,24

CP3_2_6.用直接插入排序算法对一组数“100,80,12,66,31,19,28”进行升序排序,则第四趟结束后,这组数的顺序是(  )。

A.80,100,12,66,31,19,281

B.12,80,100,66,31,19,282

C.12,31,66,80,100,19,284

D.12,66,80,100,31,19,283

CP3_2_7.用冒泡排序算法对一组数“48,98,23,45,62,51”进行升序排序,下列叙述正确的是(  )。

A.对于这组数排好序需要1趟

B.对于这组数排好序需要2趟

C.对于这组数排好序需要3趟

D.对于这组数排好序需要4趟

CP3_2_8.下列有关排序算法稳定性的叙述中,正确的是(  )。

A.如待排序的一组数有相同的数值,排序后这些数的相对次序一定保持不变,则排序算法是稳定的

B.同一组数的初始顺序不同,排序总的比较次数相同,则排序算法是稳定的

C.同一组数的初始顺序不同,排序总的交换次数相同,则排序算法是稳定的

D.同一组数的初始顺序不同,排序总的比较次数和总的交换次数都相同,则排序算法是稳定的

CP3_2_9.已经按升序排列好的一组数“20,40,47,58,62,82,94”,使用二分查找算法在这组数中查找200,判断出200不在这组数中,需要比较的次数是(  )。

A.3次

B.4次

C.1次

D.2次

CP3_2_10.一个装有16枚硬币的袋子,其中有一个硬币是伪造的,并且伪造的硬币比真的硬币要轻(真币重量10,假币重量9)。现有一台可用来比较两组硬币重量的仪器(下面程序中的sum函数模拟对一组硬币称重),下列程序使用分治法找出那枚伪造的硬币(输出伪币的下标)。在/**(1)**/处应填写的表达式为(  )。

#include <iostream>

using namespace std;

int sum(int a[], int m, int n)    //求重量和 (a[m]+a[m+1]+…+a[n])

{

    int sum = 0;     

    for (int i = m; i <= n; i++)     

    {         

        sum += a[i];

    }

    return sum;

}

int find(int a[], int left, int right) {

    if (right - left == 1)  //只剩2个硬币

        return a[right] > a[left] ? left : right;

    int mid = (right + left) / 2;

    if ((right - left) % 2 == 0)//硬币数量为奇数

    {

        if(a[mid]<10)   //mid 就是伪币,返回下标mid 

            return mid;    

        int sumLeft = sum(a, left, mid - 1);   //前面一组硬币重量之和

        int sumRight = sum(a, mid + 1, right); //后面一组硬币重量之和

        if(sumLeft > sumRight)    //假币在后面一组

            return find(a, mid + 1, right);

        else      //假币在前面一组

            return find(a, left, mid - 1);

    }

    else //硬币数量为偶数

    {         

        int sumLeft = /**(1)**/ ;

        int sumRight = sum(a, mid + 1, right);

        if(sumLeft > sumRight)  

            return find(a, mid + 1, right);

        else

            return find(a, left, mid - 1);  

    }

 }

int main()

{

    int a[16]= {10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10};

    int index = find(a,0,15);

    cout << index << endl;

    return 0;

}

A.sum(a, left, mid - 1)

B.sum(a, mid , right)

C.sum(a, left, mid)

D.sum(a, mid, right)

CP3_2_11.使用贪心法求解0-1背包问题。已知一背包能装入25kg的物品,现有重量、价值各不相同的8件物品,如何选择装入背包的物品,使装入物品的总价值最大。贪心策略是优先将性价比高的物品装入背包。下列代码实现该功能,则/**(1)**/处需要填写的语句是(  )。

说明:程序中定义了cmp()函数,是为了使用sort(items,items+n,cmp) 对items按性价比降序排序。

#include<iostream>

#include<algorithm>

using namespace std;

struct item{  //物品

    float weight;  //重量

    float value;   //价值

    float ratio;   //性价比(单位重量的价值)

};

bool cmp(struct item a, struct item b) //排序用的函数,考生不必研究 

{

    return a.ratio > b.ratio;

}

int main()

{

    int n=8;

    float c = 25;  //背包剩余的容量(还可以装入物品的重量)

struct item items[] = { {5,10},{8,11},{6,9},{2,8},

                             {7,19},{8,15},{1,1},{2,1} };

    for(int i=0; i<n; i++)  //计算性价比

       items[i].ratio = items[i].value/items[i].weight;

    sort(items,items+n,cmp);   //对items按性价比降序排序究 

    float sum= 0;    //已装入物品的总价值

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

    {

        if ( items[i].weight <= c)  //将物品i装入背包

        {

            sum += items[i].value;

            /**(1)**/

        }

     }

     cout << "装入的总价值:" << sum << endl;

}

A.c -= items[i].weight;

B.c += items[i].weight;

C.c -= items[i].value;

D.c += items[i].value;

CP3_2_12.执行下列程序,输出结果是(  )。

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

    char a[10] = "Program";

    char b[10] = "Programer";

    char c[10] = "Problem";

    int i,j,k;

    i = strcmp(a,b);

    j = strcmp(a,c);

    k = strcmp(a,"Program");

    cout << i <<"  " << j << "  " << k <<  endl;

    return 0;

}

A.1  -1  0

B.-1  1  0

C.-1  0  1

D.1  0  -1

CP3_2_13.执行下列程序,输出结果是(  )。

#include <iostream>

#include <string>

using namespace std;

int main()

{

    string s1= "Program";

    string s2;

    s2.assign(s1,2,4);

    cout << s2 <<  endl;

    return 0;

}

A.Program

B.ogram

C.ogra

D.ra

CP3_2_14.若对如图所示的有向图进行遍历,则属于深度优先遍历序列的是(  )。

A.A→B→E→C→D→F→G

B.A→B→C→E→D→F→G

C.A→B→F→G→E→C→D

D.A→B→C→E→F→G→D

CP3_2_15.下列有关面向对象程序设计的叙述中,错误的是(  )。

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

B.在面向对象程序设计中,将数据与操作数据的函数封装在一起构成类

C.在面向对象程序设计中,继承可以减少程序中的重复代码

D.在面向对象程序设计中,多态是指一个类中不同的函数完成不同的功能

二、多项选择题(共5题,每题3分,共15分)

CP3_2_16.下列有关排序算法的叙述中,正确的有(  )。

A.选择排序,总的比较次数和数据的初始顺序无关

B.插入排序,所需时间与数据的初始顺序有关

C.冒泡排序是不稳定的排序

D.插入排序,第k次外层循环后,前k个元素已经是排好序的

CP3_2_17.下列有关局部最优解和全局最优解的叙述中,不正确的有(  )。

A.若一项决策和解决该问题的所有决策相比较是最优的,被称为全局最优解

B.若一项决策和解决该问题的部分决策相比较是最优的,被称为局部最优解

C.全局最优解不一定是局部最优解

D.任何问题都可以使用贪心算法得到全局最优解

CP3_2_18.若对如图所示的无向图进行遍历,则属于广度优先遍历序列的有(  )。

A.A→B→C→D→E→F→G→H

B.A→B→D→C→F→E→G→H

C.A→C→B→F→E→D→G→H

D.A→C→F→E→G→H→B→D

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

A.在面向对象的程序设计中,类的数据成员称为属性

B.在面向对象的程序设计中,类的函数成员称为方法

C.类的方法只能在类的内部定义

D.类的方法可以在类的内部定义,也可以在类的外部定义

CP3_2_20. 有如下Test类的定义,则下列有关该类对象定义的语句,不正确的有(  )。

class Test

{

public:

    Test (int i){}

    Test (int i, int j, int k){}

};

A.Test a;

B.Test a1(1);

C.Test a2(1,2);

D.Test a3(1,2,3);

三、编程题(共2题,每题20分,总分40分)

CP3_2_21.

一渔夫打鱼三天,然后晒网两天,一直这样循环作业,打鱼一天可以赚300元,晒网一天需要花费30元,编写程序,输入一个正整数代表渔夫需要赚的钱数,输出渔夫为赚够这些钱需要作业的天数。

样例1

输入:1000

输出:6

样例2

输入:6000

输出:36

CP3_2_22.

小明学习二分查找算法后,想编写一个C++关键字查询程序。首先将学过的15个C++的关键字按升序的顺序存放到二维字符数组中,然后输入要查找的关键字,如果查到则输出该关键字的位置索引;若没有查到则输出-1。

注意

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

#include <iostream>

#include <cstring>

using namespace std;

int search(char words[][30], int length, char *key);

int main()

{

    char words[15][30]={"bool","break","case","char","continue",

                           "do", "double", "else", "float", "for","if",

                           "int","long","switch","while"};  

    char key[30];  //要查找的关键字

    cin >> key;    

    int index = search(words, 15, key);//返回待查找关键字的索引,找不到返回-1

    cout << index << endl;

}

int search(char words[][30], int length, char *key)

{

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

     

     

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

}

样例1

输入:float

输出:8

样例2

输入:floor

输出:-1

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 实战(11)样式表 | 11.2、使用样式表

文章目录 一、使用样式表1、盒子模型2、应用样式表2.1、全局应用2.2、局部应用2.3、通过文件应用 3、使用样式表实现换肤 前言&#xff1a; 在Qt框架中&#xff0c;样式表&#xff08;Style Sheets&#xff09;是一种功能强大的工具&#xff0c;它允许开发者以一种简洁而高效的…

怎么把本地代码上传到阿里云里面

项目需求 将本地项目上传到阿里云&#xff0c;一般有两种情况 1.在本地创建的项目&#xff0c;没有关联过其他的git远程仓库。 2.从其他项目复制的项目代码&#xff0c;但是想要以此项目为基础重新创建一个新的项目。 解决方式 第一种 第一种项目很好解决&#xff0c;就按…

LeetCode题练习与总结:路径交叉--335

一、题目描述 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始&#xff0c;先向北移动 distance[0] 米&#xff0c;然后向西移动 distance[1] 米&#xff0c;向南移动 distance[2] 米&#xff0c;向东移动 distance[3] 米&#xff0c;持续移动。也就是说&#xf…

从安灯系统看汽车零部件工厂的智能制造转型

在当今快速发展的制造业领域&#xff0c;汽车零部件工厂正面临着日益激烈的市场竞争和不断提高的客户需求。为了在竞争中脱颖而出&#xff0c;实现可持续发展&#xff0c;许多汽车零部件工厂纷纷踏上智能制造转型之路。而安灯系统作为一种重要的生产管理工具&#xff0c;在这场…

Nginx可视化管理平台nginxWebUI(1)【保姆级部署方式】

目录 nginxWebUI简介 1.概述&#xff1a; 2.功能 NginxWebUI的部署方式 实验环境&#xff1a; 1.安装JDK环境、nginx和nginx程序 2.启动nginxWebUI 3.使用浏览器登录webUI 访问格式&#xff1a; 登陆成功后我们就来到了它的可视化管理页面 nginxWebUI简介 1.概述&am…

面试总结一

面试总结 1、自我介绍一下自己2.面试11、css常用布局有哪些2、css常用的属性3.js原型链4、开发中遇到的技术难点5、闭包6、ts了解什么呢7.git都用什么命令8、vue怎么打包9.vue启动一个项目需要什么10、vue怎么创建一个项目 2.面试21.vue2和vue3有什么区别2.复杂组件的封装&…

vue-element-admin顶部导航栏的修改

基于vue-element-admin的顶部一级导航栏的调整&#xff0c;因为一级路由过多导致其他元素被挤到第二行&#xff0c;故现在将原来一级路由数组拆分成两个数组&#xff0c;第二个数组以子菜单显示 关键处调整代码 html <el-menu:active-text-color"variables.menuActiv…

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发 在全球化的浪潮下&#xff0c;跨境电商成为越来越多企业拓展国际市场的重要途径。然而&#xff0c;语言障碍成为了一个不可忽视的问题。为了更好地服务全球用户&#xff0c;为自己的跨境网站添加多国语言…

199116-50-2,Mito-Tracker Orange CMTMRos是一种高亲和力的线粒体染色剂

一、基本信息 中文名称&#xff1a;线粒体橙色荧光探针 英文名称&#xff1a;Mito-Tracker Orange CMTMRos CAS号&#xff1a;199116-50-2 分子式&#xff1a;C24H24Cl2N2O 分子量&#xff1a;427.37 存储条件&#xff1a;避光、冷藏保存&#xff0c;避免长时间暴露于光线…

基于SSM健身国际俱乐部系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;场地类别管理&#xff0c;场地信息管理&#xff0c;运动项目管理&#xff0c;场地类型管理&#xff0c;项目类型管理 用户账号功能包括&#xff1a;系统首页&#xff0c;个人中心…

QML----Webengineview点击网页上的下载没反应,下载文件

问题 使用webe加载网页时&#xff0c;点击下载页面会没有反应。原因就是它默认是关闭下载功能 解决 需要在profile里监听下载事件打开onDownloadRequested,当有下载时会触发这个信号,会获取到一个WebEngineDownloadItem这是下载的东西,查询它的一些相关参数,可以修改路径和开…

网站前端登录加密方案调查

https://zhuanlan.zhihu.com/p/625204114 案例 国家政务服务平台 账号设置 (gjzwfw.gov.cn) 方案 代码混淆Rsa公钥加密https协议 案例 LOFTER&#xff08;乐乎&#xff09; - 让兴趣&#xff0c;更有趣 方案 sha256https Sign in GitLab (secxun.com) 方案 不加密内网 凤凰…

mysql视图介绍(本质,修改数据时的表现,排序覆盖)

目录 视图 介绍 语法 使用 本质 修改数据 排序覆盖 视图 介绍 是一种虚拟表&#xff0c;它不存储实际的数据&#xff0c;而是基于查询结果动态生成数据 将查询结果以表结构保存视图和基表之间会互相影响 视图可以基于一张或多张表来创建&#xff0c;并且可以像普通表一样…

List、Set、数据结构、Collections

一、数据结构 1.1 常用的数据结构 栈 栈&#xff1a;stack,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在其他任何位置进行添加、查找、删除等操作。 简单的说&#xff1a;采用该结构的集合&#…

Clickhouse笔记(二) 集群搭建

0.集群规划 操作系统使用ubuntu2204server&#xff0c;8C8G100G。 节点分片部署192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper192.168.60.7分片2副本1clickhouse-server/clickhouse-c…

ECharts饼图-饼图纹理,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…

day7:软件包管理

一&#xff0c;软件包概述 软件包概述 软件包用于安装&#xff0c;升级&#xff0c;卸载一个软件 软件包类型 二进制包 源码经过了编译&#xff08;而且成功了&#xff09;后产生的包&#xff0c;二进制包是linux下默认的安装包 编译好的文件&#xff0c;直接使用&#xff…

音质最好的麦克风有哪些?领夹麦克风哪个品牌好?麦克风十大品牌

在当下自媒体行业蓬勃发展的背景下&#xff0c;无线领夹麦克风已成为众多内容创作者不可或缺的装备。市场上的无线领夹麦克风种类繁多&#xff0c;品质参差不齐&#xff0c;价格也相差悬殊&#xff0c;这使得选购一款合适的麦克风变得颇具挑战性。许多消费者在追求性价比的过程…

无人机避障——路径规划篇(一) JPS跳点搜索算法A*算法对比

JSP 跳点搜索算法与改进 A*算法对比 一、算法概述: 跳点搜索(Jump Point Search,JPS)算法:一种用于路径规划的启发式搜索算法。它主要用于在网格地图(如游戏地图、机器人运动规划地图等)中快速找到从起点到终点的最短路径。该算法在改进 A*算法的基础上进行了优化,通过跳过一…

自由学习记录(12)

综合实践 2D的Shape&#xff0c;Tilemap都要导包的&#xff0c;编辑器也要导包&#xff0c;。。和2d沾边的可能3d都要主动导包 应该综合的去运用&#xff0c;不见得Tilemap就很万能&#xff0c;如果要做什么顶方块的有交互反应的物体&#xff0c; 那直接拖Sprite会更方便一些…