【C++笔试强训】第七天
选择题
解析:内联函数(
inline
)一般用于代码较少,代码块里面没有递归且频繁调用的函数,是一种以空间换时间(不是指内存,而是指令变多编译出来的可执行程序会变大)的做法。内联函数在预编译的时候展开,会用函数体替换函数调用;内联函数可能会使目标文件变大,但是少了调用开销,增加程序运行的效率。
解析:函数默认的参数可以有多个;当参数为多数的时候,参数默认值应该从右往左进行缺省;参数可以不用设置默认值。
解析:对于类的默认访问权限:
class
默认访问权限是私有(private
)的,struct
默认访问权限是公有的(public
);类定义有2种方式:1.可以将声明和成员函数的定义全部放在类中;2.类中只放成员变量和成员函数的声明,成员函数的定义可以类外其他.cpp文件中,但是要注意成员函数名前要添加
类名::
。成员可以声明为私有的也可以声明为公共的,通常建议将成员变量设置为
private
,成员函数设置为public
。
解析:调用构造函数时候,传参为
aa = 4 ,bb = 5
;a = aa--
后置--
,是先使用再--
,所以a = 4
;b = a * bb
,所以b = 20
。下面为该类的实现,其中类中的成员为private
,所以只能在类里面进行访问。
解析:这道题是考察构造函数。无参的构造函数、全缺省的构造函数及编译器自动生成的构造函数都被称为默认构造函数。
A 构造函数是没有返回值的,不可以声明返回类型;
B 一般情况下构造函数的权限都是public,因为在类外创建对象时,编译器要调用构造函数,但也有特殊情况,构造函数可以用
private
进行修饰,但是修饰之后就不会在外部进行调用;单例模式:一个类只能创建一个对象,这时候会将构造函数设置为private,所以错误;C 构造函数必须与类名相同,正确;
D 构造函数也是个函数,可以带参数。
解析:必须用初始化列表初始化的是:自定义类型,
const
修饰的类型,引用类型。所以b,c需要用初始化列表进行初始化。静态变量虽然有cosnt
修饰,但是也是静态变量,静态变量必须在全局进行初始化。
如果将运算符重载成类的成员函数,形参个数要比该运算符操作数个数少1,因为成员函数含有隐藏的this指针
A 正确,是普通整形之间的加法
B中左操作数是 BigNumber类型,可以调用重载运算符,相当于b1.operator+(3),可以将3类型转换成BigNumber类,正确;
C 中相当于b1.operator+(b2),this指针代表左操作数,正确;
D 3不是BigNumber类型的对象,不能调用类中的函数,更不能够代表this指针,所以错误。可以写成类的友元函数方便这样使用。
解析:友元函数可以让本类和友元类对象调用;友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数;类的成员函数是属于类的,调用的时候是通过指针
this
调用的;对于友元函数,是没有this
指针的,友元函数打破了类访问限定符的限制,可以访问私有成员变量或者成员函数。所以D选项错误。
解析:变量
p
是在栈上创建的,它是由操作系统分配的,new
和malloc
的功能类似,new
出来的东西在堆区,是用户进行申请的。
解析:类模板实例化之后就会变成一个具体的类。
编程题
1.Fibonacci数列
解析:简单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.合法括号序列判断
解析:本题利用栈操作,比较简单。首先检查一下字符串中是否有其他的字符;然后将字符为
(
的入栈;遇见)
出栈,确保都是成对;也要考虑出栈的时候栈为空,栈为空说明栈里面没有元素却遇见了)
,此时已经说明不成立了,直接返回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++笔试强训】第七天
选择题 解析:内联函数(inline)一般用于代码较少,代码块里面没有递归且频繁调用的函数,是一种以空间换时间(不是指内存,而是指令变多编译出来的可执行程序会变大)的做法。内联函数在预…...
mysql binlog 一直追加写,磁盘满了怎么办?
文章目录 mysql binlog 清理策略1、设置binlog最大的文件数和文件大小2、定时清理过期binlog文件3、手动清理binlog文件4、禁用或启用binlogmysql binlog用于记录mysql数据库所有变更(数据库的DDL、DML操作)包括用户执行的语句,以及底层引擎所执行的操作的二进制日志,主要用…...

缓存穿透、缓存雪崩、缓存击穿解决方案
什么是缓存 缓存就是数据交换的缓冲区(称作Cache),是存贮数据的临时地方,一般读写性能较高。 添加 redis 缓存 给店铺类型查询业务添加缓存 需求:添加ShopTypeController中的queryTypeList方法,添加查询缓存 缓存更新…...

web + servlet + jdbc mysql 实现简单的表单管理界面
目录数据库创建数据库连接servlet创建,这里注意一下我的数据库我自己改了一下名字lhx网页html运行文件目录展示首先我们准备好开发使用的工具以及配置 idea2020 tomcat8.5 创建javaweb参考idea编译Tomcat详细步骤 IDEA通过JDBC连接数据库请参考jdbc连接数据库 需要登陆注册界面…...
Maven 国内镜像仓库
镜像仓库目标 当我们未定义任何远程仓库时,使用 Maven 更新依赖时,其会去默认远程仓库中拉取,默认远程仓库 是国外地址,所以在国内访问特别慢,想提升访问速度,需要将国外地址换成国内地址 更换仓库地址的…...
day21 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
二叉搜索树的最小绝对差 二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它的每个节点都满足以下条件: 左子树上所有节点的值均小于该节点的值;右子树上所有节点的值均大于该节点的值&#…...
大学计算机(软件类)专业推荐竞赛 / 证书 官网及赛事相关信息整理
大学计算机专业(软件)推荐竞赛 / 证书 官网及赛事相关信息 一、算法类(丰富简历): 1、ACM国际大学生程序设计竞赛: 官网:https://icpc.global/ 国内:http://icpc.pku.edu.cn/index.htm 报名方式:区域预赛一般每年9-1…...
Metasploit入门到高级【第九章】
预计更新第一章:Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章:Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章:Metasploit 基础 Metasploit 的基本概念Met…...
JDK之8后: 协程? 虚拟线程!!!
特性官方文档: https://openjdk.org/jeps/436 Java协程 近三十年来,Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行,并且由于 Java 是多线程的,因此多个执行线程同时发生。线程是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推荐期刊和会议分享(人工智能)
前 言国内高等院校研究生及博士毕业条件需要发表高水平期刊或者顶会(清北上交等重点学校毕业要求为至少发一篇顶会),很多同学私信问到一级学会的会议论文怎么找、是什么,比如前段时间放榜的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…...
交换瓶子
交换瓶子 贡献者:programmer_ada 有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么…...
二、Docker安装、启动、卸载、示例
Docker 支持 CentOS 6 及以后的版本,可以直接通过yum进行安装: 使用流程:启动主机 – 启动Docker服务 – 下载容器镜像 – 启动镜像得一个到容器 – 进入容器使用我们想要的程序 主机一般是Linux、Utuban 以下主机系统以CentOS7为例子&#…...

开心档之C++ STL 教程
C STL 教程 目录 C STL 教程 实例 在前面的章节中,我们已经学习了 C 模板的概念。C STL(标准模板库)是一套功能强大的 C 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构…...
Thread 类的基本用法
文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...
2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)
文章目录1.病毒溯源问题:求树的最长链长度和字典序最小的最长链思路:2.龙龙送外卖思路:3.红色警报:思路:1.病毒溯源 问题:求树的最长链长度和字典序最小的最长链 思路: 一开始用 bfs 做的 &a…...

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

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

leetcode:2273. 移除字母异位词后的结果数组(python3解法)
难度:简单 给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。 在一步操作中,需要选出任一下标 i ,从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件: 0 < i < words.l…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...