当前位置: 首页 > news >正文

【C++笔试强训】第七天

选择题

image-20230329200557737

解析:内联函数(inline)一般用于代码较少,代码块里面没有递归且频繁调用的函数,是一种以空间换时间(不是指内存,而是指令变多编译出来的可执行程序会变大)的做法。内联函数在预编译的时候展开,会用函数体替换函数调用;内联函数可能会使目标文件变大,但是少了调用开销,增加程序运行的效率。

image-20230329200607438

解析:函数默认的参数可以有多个;当参数为多数的时候,参数默认值应该从右往左进行缺省;参数可以不用设置默认值。

image-20230329200614023

解析:对于类的默认访问权限:class默认访问权限是私有(private)的,struct默认访问权限是公有的(public);

类定义有2种方式:1.可以将声明和成员函数的定义全部放在类中;2.类中只放成员变量和成员函数的声明,成员函数的定义可以类外其他.cpp文件中,但是要注意成员函数名前要添加类名::

成员可以声明为私有的也可以声明为公共的,通常建议将成员变量设置为private,成员函数设置为public

image-20230329200620759

解析:调用构造函数时候,传参为aa = 4 ,bb = 5a = aa--后置--,是先使用再--,所以a = 4b = a * bb,所以b = 20。下面为该类的实现,其中类中的成员为private,所以只能在类里面进行访问。

image-20230327173631604

image-20230329200628753

解析:这道题是考察构造函数。无参的构造函数、全缺省的构造函数及编译器自动生成的构造函数都被称为默认构造函数。

A 构造函数是没有返回值的,不可以声明返回类型;

B 一般情况下构造函数的权限都是public,因为在类外创建对象时,编译器要调用构造函数,但也有特殊情况,构造函数可以用private进行修饰,但是修饰之后就不会在外部进行调用;单例模式:一个类只能创建一个对象,这时候会将构造函数设置为private,所以错误;

C 构造函数必须与类名相同,正确;

D 构造函数也是个函数,可以带参数。

image-20230329200637284

解析:必须用初始化列表初始化的是:自定义类型,const修饰的类型,引用类型。所以b,c需要用初始化列表进行初始化。静态变量虽然有cosnt修饰,但是也是静态变量,静态变量必须在全局进行初始化。

image-20230329200726848

如果将运算符重载成类的成员函数,形参个数要比该运算符操作数个数少1,因为成员函数含有隐藏的this指针

A 正确,是普通整形之间的加法
B中左操作数是 BigNumber类型,可以调用重载运算符,相当于b1.operator+(3),可以将3类型转换成BigNumber类,正确;
C 中相当于b1.operator+(b2),this指针代表左操作数,正确;
D 3不是BigNumber类型的对象,不能调用类中的函数,更不能够代表this指针,所以错误。可以写成类的友元函数方便这样使用。

image-20230329200739477

解析:友元函数可以让本类和友元类对象调用;友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数;类的成员函数是属于类的,调用的时候是通过指针this调用的;对于友元函数,是没有this指针的,友元函数打破了类访问限定符的限制,可以访问私有成员变量或者成员函数。所以D选项错误。

image-20230329200750315

解析:变量p是在栈上创建的,它是由操作系统分配的,newmalloc的功能类似,new出来的东西在堆区,是用户进行申请的。

image-20230329200759005

解析:类模板实例化之后就会变成一个具体的类。

编程题

1.Fibonacci数列

image-20230327163627202

解析:简单dp问题。我们先通过迭代找到距离N最相近的两个斐波那契数,然后通过比较计算得到哪个更近。注意在迭代的时候要先进行交换,再计算third的值。

#include <iostream>
using namespace std;int main() {int N = 0;cin >> N;int first = 0;int second = 1;int third = 1;//当N为0时,要单独进行计算if(N == 0){cout << "0";return 0;}while(third < N){ //一定要先进行交换,再计算thirdfirst = second;second = third;third = first + second;}int count1 = third - N;int count2 = N - second;int min = (count1 < count2) ? count1:count2;cout << min;return 0;
}

答案解析:本题是对于Fibonacci数列的一个考察,Fibonacci数列的性质是第一项和第二项都为1,后面的项形成递归:F(n) = F(n - 1) + F(n - 2)。
【解题思路】:本题可以通过先找到距离N最近的两个Fibonacci数,这两个数分别取自距离N的最近的左边一个数L和右边一个数R,然后通过min(N - L, R - N)找到最小步数。

#include <iostream>
using namespace std;
int main(){int N, f, l = 0,r = 0,f0 = 0,f1 = 1;cin >> N;while(1){f = f0 + f1;f0 = f1;f1 = f;//找到比N小且距离N最近的数,求出距离if(f < N)l = N-f;else{//找到比N大且距离N最近的数,求出距离r = f - N;break;}}//取最小距离cout << min(l,r) << endl;return 0;
}

2.合法括号序列判断

image-20230327164906539

解析:本题利用栈操作,比较简单。首先检查一下字符串中是否有其他的字符;然后将字符为(的入栈;遇见)出栈,确保都是成对;也要考虑出栈的时候栈为空,栈为空说明栈里面没有元素却遇见了),此时已经说明不成立了,直接返回false。当循环结束,判断栈是否为空,不为空说明不成立,返回false;为空说明成立,返回true。

class Parenthesis {
public:bool chkParenthesis(string A, int n) {// write code herestack<char> s1;for(int i = 0; i < n; i++){//判断是否有其他的字符if(A[i] != '(' && A[i] != ')')return false;//当为(的时候进栈if(A[i] == '(')s1.push(A[i]);//当为)的时候出栈,且在出栈的时候要判断栈是否为空if(A[i] == ')'){//如果栈为空,直接返回falseif(s1.empty())return false;s1.pop();}}//判断栈是否为空,如果不为空则返回false;如果为空,返回trueif(s1.empty())return true;elsereturn false;}
};

答案解析:本题考查的是对栈的应用
【解题思路】:
用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。

class Parenthesis {
public:bool chkParenthesis(string A, int n) {// write code herestack<char> sc;for (auto ele : A) {switch (ele) {case'(':sc.push(ele);break;case')':{if (sc.empty() || sc.top() != '(')return false;elsesc.pop();}break;default:return false;}}return true;}
};

相关文章:

【C++笔试强训】第七天

选择题 解析&#xff1a;内联函数&#xff08;inline&#xff09;一般用于代码较少&#xff0c;代码块里面没有递归且频繁调用的函数&#xff0c;是一种以空间换时间&#xff08;不是指内存&#xff0c;而是指令变多编译出来的可执行程序会变大&#xff09;的做法。内联函数在预…...

mysql binlog 一直追加写,磁盘满了怎么办?

文章目录 mysql binlog 清理策略1、设置binlog最大的文件数和文件大小2、定时清理过期binlog文件3、手动清理binlog文件4、禁用或启用binlogmysql binlog用于记录mysql数据库所有变更(数据库的DDL、DML操作)包括用户执行的语句,以及底层引擎所执行的操作的二进制日志,主要用…...

缓存穿透、缓存雪崩、缓存击穿解决方案

什么是缓存 缓存就是数据交换的缓冲区&#xff08;称作Cache&#xff09;,是存贮数据的临时地方&#xff0c;一般读写性能较高。 添加 redis 缓存 给店铺类型查询业务添加缓存 需求&#xff1a;添加ShopTypeController中的queryTypeList方法&#xff0c;添加查询缓存 缓存更新…...

web + servlet + jdbc mysql 实现简单的表单管理界面

目录数据库创建数据库连接servlet创建,这里注意一下我的数据库我自己改了一下名字lhx网页html运行文件目录展示首先我们准备好开发使用的工具以及配置 idea2020 tomcat8.5 创建javaweb参考idea编译Tomcat详细步骤 IDEA通过JDBC连接数据库请参考jdbc连接数据库 需要登陆注册界面…...

Maven 国内镜像仓库

镜像仓库目标 当我们未定义任何远程仓库时&#xff0c;使用 Maven 更新依赖时&#xff0c;其会去默认远程仓库中拉取&#xff0c;默认远程仓库 是国外地址&#xff0c;所以在国内访问特别慢&#xff0c;想提升访问速度&#xff0c;需要将国外地址换成国内地址 更换仓库地址的…...

day21 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

二叉搜索树的最小绝对差 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;是一种特殊的二叉树&#xff0c;它的每个节点都满足以下条件&#xff1a; 左子树上所有节点的值均小于该节点的值&#xff1b;右子树上所有节点的值均大于该节点的值&#…...

大学计算机(软件类)专业推荐竞赛 / 证书 官网及赛事相关信息整理

大学计算机专业(软件)推荐竞赛 / 证书 官网及赛事相关信息 一、算法类(丰富简历)&#xff1a; 1、ACM国际大学生程序设计竞赛&#xff1a; 官网&#xff1a;https://icpc.global/ 国内&#xff1a;http://icpc.pku.edu.cn/index.htm 报名方式&#xff1a;区域预赛一般每年9-1…...

Metasploit入门到高级【第九章】

预计更新第一章&#xff1a;Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章&#xff1a;Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章&#xff1a;Metasploit 基础 Metasploit 的基本概念Met…...

JDK之8后: 协程? 虚拟线程!!!

特性官方文档: https://openjdk.org/jeps/436 Java协程 近三十年来&#xff0c;Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行&#xff0c;并且由于 Java 是多线程的&#xff0c;因此多个执行线程同时发生。线程是Java的并发…...

体验 jeecg

体验 jeecg官网地址事前准备安装升级 node 和 npm 版本验证安装安装 pnpm clidocker 启动 MySQLdocker 启动 redisgit clone 项目启动JAVA项目 jeecg-boot启动Vue3项目 jeecgboot-vue3官网地址 http://www.jeecg.com/ 事前准备 (1) 为了回避Could not find artifact com.mic…...

投稿指南【NO.13】计算机学会CCF推荐期刊和会议分享(人工智能)

前 言国内高等院校研究生及博士毕业条件需要发表高水平期刊或者顶会&#xff08;清北上交等重点学校毕业要求为至少发一篇顶会&#xff09;&#xff0c;很多同学私信问到一级学会的会议论文怎么找、是什么&#xff0c;比如前段时间放榜的CVPR论文就是人工智能领域的顶会国际会议…...

一份sql笔试

1、 select substr(time,1,10),count(order_id),count(distinct passenger_id) from order where substr(time,1,7)2023-08 group by substr(time,1,10) order by substr(time,1,10);2、 select city_id from (select * from order where substr(time,1,7) 2022-08) t1 left j…...

交换瓶子

交换瓶子 贡献者&#xff1a;programmer_ada 有N个瓶子&#xff0c;编号 1 ~ N&#xff0c;放在架子上。 比如有5个瓶子&#xff1a; 2 1 3 5 4 要求每次拿起2个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的序号为&#xff1a; 1 2 3 4 5 对于这么…...

二、Docker安装、启动、卸载、示例

Docker 支持 CentOS 6 及以后的版本&#xff0c;可以直接通过yum进行安装&#xff1a; 使用流程&#xff1a;启动主机 – 启动Docker服务 – 下载容器镜像 – 启动镜像得一个到容器 – 进入容器使用我们想要的程序 主机一般是Linux、Utuban 以下主机系统以CentOS7为例子&#…...

开心档之C++ STL 教程

C STL 教程 目录 C STL 教程 实例 在前面的章节中&#xff0c;我们已经学习了 C 模板的概念。C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了通用的模板类和函数&#xff0c;这些模板类和函数可以实现多种流行和常用的算法和数据结构…...

Thread 类的基本用法

文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)

文章目录1.病毒溯源问题&#xff1a;求树的最长链长度和字典序最小的最长链思路&#xff1a;2.龙龙送外卖思路&#xff1a;3.红色警报&#xff1a;思路&#xff1a;1.病毒溯源 问题&#xff1a;求树的最长链长度和字典序最小的最长链 思路&#xff1a; 一开始用 bfs 做的 &a…...

917. 仅仅反转字母

917. 仅仅反转字母https://leetcode.cn/problems/reverse-only-letters/ 难度简单189 给你一个字符串 s &#xff0c;根据下述规则反转字符串&#xff1a; 所有非英文字母保留在原有位置。所有英文字母&#xff08;小写或大写&#xff09;位置反转。 返回反转后的 s 。 示例…...

Linux-Git

一、总论 1.1 写在前面的话 ​ 这已经是我第三遍学Git相关操作了&#xff0c;可以说这个玩意是真的狗&#xff0c;因为确实用不到&#xff0c;不知道下个学期会不会用到&#xff0c;直到现在我刚刚学完&#xff0c;处于知识水平的巅峰&#xff0c;知道Git的具体功能&#xff…...

leetcode:2273. 移除字母异位词后的结果数组(python3解法)

难度&#xff1a;简单 给你一个下标从 0 开始的字符串 words &#xff0c;其中 words[i] 由小写英文字符组成。 在一步操作中&#xff0c;需要选出任一下标 i &#xff0c;从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件&#xff1a; 0 < i < words.l…...

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…...

4.4---Spring框架之Spring事务(复习版本)

Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;spring是无法提供事务功能的。 Spring只提供统一事务管理接口&#xff0c;具体实现都是由各数据库自己实现&#xff0c;数据库事务的提交和回滚是通过 redo log 和 undo log实现的。 S…...

IP-Guard是否支持禁止客户端电脑卸载指定软件?

哪些浏览器支持设置窗口水印? 支持的浏览器有:搜狗浏览器、360安全浏览器、360极速浏览器、qq浏览器、谷歌浏览器、ie浏览器、edge浏览器 注意: 1.目标URL窗口水印不支持Firefox浏览器和猎豹浏览器 2.搜狗浏览器在兼容模式下,目标URL窗口水印不生效 3.部分浏览器(360安全…...

系统图标形状overlayapk

时间&#xff1a;2020/10/10 之前公司不允许csdn&#xff0c;笔记写在其它地方。最近整理过来 1、图标形状的overlay frameworks\base\packages\overlays目录 2、某一种形状的源码 默认配置在framework/base/core/res/res res下面放着图标形状的mask路径,这个值是一个矢量图…...

辅助编程coding的两种工具:Github Copilot、Cursor

目录Cursor简介下载地址&#xff1a;使用技巧&#xff1a;CHAT:example 1&#xff1a;注意&#xff1a;example 2&#xff1a;Github Copilot官网简介以插件方式安装pycharm自动写代码example 1&#xff1a;写一个mysql取数据的类example 2&#xff1a;写一个多重共线性检测的类…...

MySQL5.7安装教程

1.鼠标右击【MySQL5.7】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 MySQL5.7】 2.打开解压后的文件夹&#xff0c;双击运行【mysql-installer-community-5.7.27.0】 3.勾选【I accept the license terms】&#xff0c;点击【Next】 4…...

ML@sklearn@ML流程Part3@AutomaticParameterSearches

文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证&#x1f388;egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…...

Ubuntu22安装OpenJDK

目录 一、是否自带JDK 二、 删除旧JDK&#xff08;如果自带JDK满足需求就直接使用了&#xff09; 三、下载OpenJDK 四、新建/home/user/java/文件夹 五、 设置环境变量 六、查看完成 附&#xff1a;完整版连接&#xff1a; 一、是否自带JDK java -version 二、 删除旧…...

【数据库管理】②实例管理及数据库启动关闭

1. 实例和参数文件 1.1 instance 用于管理和访问 database. instance 在启动阶段读取初始化参数文件(init parameter files). 1.2 init parameter files [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ cd $ORACLE_HOME/dbs [oracl…...

【2023】Kubernetes之Pod与容器状态关系

目录简单创建一个podPod运行阶段&#xff1a;容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段&#xff1a; Pod创建后&am…...