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

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

选择题

image-20230322184253135

解析:在for循环的循环条件(y = 123) && (x < 4)中 ,&& 表示逻辑与,从左向右判断两边条件是否成立,只有当两边的条件都为真时,这条语句才为真。左边y = 123是赋值语句,一直为真;右边x<4刚开始也为真,随着x++,当x=4的时候x<4条件不成立,那么(y = 123) && (x < 4)这条语句为假,循环结束。所以x从0到3能够执行循环,当x等于4的时候循环结束,一共执行4次。

image-20230322192002466

解析:本题考查printf的格式化输出。printf可以在%和格式字符(s,d,f等)中间插入格式修饰符,用于指定输出数据的域宽(字宽,所占的列数),如用“%5d”,指定输出数据占5列,输出的数据在域内向右靠齐,可以在在指定域宽前加-表示向左靠齐,如"%-5d",表示输出的数据在域内向左靠齐。在使用f格式符时,可以指定数据宽度和小数位数,用%m.nf其中,m表示输出数据的宽度,即占m列,n表示小数点后保留n位小数。(若不需强调输出数据宽度,可直接用%.nf)。

本题中“%5.3s”表示字宽为5,小数点后面的是精度,这里的3表示打印3个字符,在域内向右对齐,所以前面要有2个空格。

image-20230322193828935

解析:本题中for循环判断条件中,j = 0是赋值语句,那么该循环将会出现无限循环或者一次也不循环的情况。

image-20230322194259402

解析:本题考查逻辑与&&与逻辑或||,他们都是从左向右进行真假判断的。(a == 1 && b++==2)a == 1为真,b++==2++为后置,先使用再++,所以b++==2也为真,所以(a == 1 && b++==2)这条语句为真,++之后b=3;进入之后的判断语句(b!=2||c--!=3)中,因为是||,所以只要一个为真就为真,上面得到b=3所以b!=2为真,不用再进行c--!=3真假的判断。所以输出结果为1,3,3。

image-20230322195214186

解析:本题主要考查类型提升,题目中的类型中double为最高值,所以最后计算结果的类型就是double类型。

image-20230322195502507

解析:本题考查二维数组的概念。二维数组的第一个[]表示的是行数,第二个[]表示的是列数,可以不指定行数,但是二维数组的列数必须指定。本题中二维数组p是4行4列,可用下图表示。p[1][2]表示第2行第3列,由下图可知为0。

image-20230322200233121

image-20230322200302554

解析:本题考查或|,有一个为真即为真,是对二进制数值进行计算,正数的原码、反码和补码相同,可以直接换算成二进制计算。

image-20230322200902905

image-20230322201006908

解析:本题考查的是左移位操作符,移动的是二进制位。<<左移位操作符,后面补0;>>右移位操作符,前面补符号位。可以理解为左移n位,就是扩大2n倍;右移n位,就是缩小2n倍。1<<5变为32,-1之后为31,a=21^为按位异或,计算方法是:同为假,异为真,也是二进制位运算:

image-20230322202123756

image-20230322202154921

解析:本题考查指针及前置++和后置++的用法。前置++是先++再使用;后置++是先使用再++。A中*p+=1可以表示为*p=*p+1p是指向year的指针,所以*p表示的就是year的值,*p的改变也会引起year的改变;B中也是对*p进行++,可以改变year的值;C中使用前置++改变*p的值,可以改变year的值;D中*p++相当于*(p++),改变的是p指针并没有改变year

image-20230322202922850

解析: free只是对在堆上开辟的空间进行释放,并不会把指针变量的值置为NULL; 32位系统下任何类型指针的长度都是4个字节,64位系统下任何类型指针的长度都是8个字节;指针的数据类型声明的是指针实际指向内容的数据类型;野指针是指向未分配或者已经释放的内存地址。

编程题

1.组队竞赛

image-20230321175827094

解析:假设总共有9个参赛选手,他们的水平值经过sort排序后为:1 2 3 4 5 6 7 8 9 。当1,8,9为一个队伍,2, 6,7为一个队伍,3, 4,5为一个队伍的时候,队伍的水平值为 8,6,4;此时队伍水平值总和最大,为18。假设数组元素个数为vv.size, sort排完序后数组元素8的下标为[vv.size - 2],6的下标为[vv.size - 4],4的下标为[vv.size - 6], 此例中队伍个数nums是3,参赛选手个数即数组元素个数vv.size为9,(vv.size -1)得到的是数组中最后一个元素的下标 , (vv.size -2) 得到的是当1,8,9这个队伍中的水平值,每次-2可得到各队伍的水平值,依次得到 8 6 4。注意计算输出结果的时候数据类型使用long long

#include <iostream>
#include <vector>//vector的头文件
#include <algorithm>//sort的头文件
using namespace std;//展开命名空间
int main()
{int _nums = 0;cin >> _nums; vector<int> vv;vv.reserve(3*nums);//开辟空间,指定空间大小//reverse开辟空间,并不会初始化,不改变size大小,所以不能使用vv.size()//for(int i = 0; i < vv.size(); i++)for(int i = 0; i < 3 * nums; i++){//因为数组长度未知,不能直接使用cin >> vv[i]int t = 0;cin >> t;vv.push_back(t);//尾插,插入数据}sort(vv.begin(),vv.end());//排序long long sum = 0;int j = 0; for(int i = (vv.size()-2); i >= 0; i -= 2) {if(j < _nums)//查看队伍个数{sum += vv[i];j++;}elsebreak;}cout << sum;return 0;
}

答案解析:队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍
的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。
【解题思路】:
本题的主要思路是贪心算法,贪心算法其实很简单,就是每次选值时都选当前能看到的局部最解忧,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取 每组中第二大的
例如 现在排序后 有 1 2 5 5 8 9 ,那么分组为1 8 9 和 2 5 5
关系arr[arr.length-2*(i+1)]

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {int n = 0;// IO型OJ可能会有多组测试用例,所以这里要持续接收输入多组测试用例。while(cin >> n){long long sum = 0;vector<int> v;v.resize(3*n);for(int i = 0; i < v.size(); i++){cin >> v[i]; //输出各个值}sort(v.begin(),v.end()); //从低到高排序for(int i = 0; i < n; i++) //设置循环条件为队伍个数{sum += v[v.size() -( (i + 1) * 2)]; //将各个队伍的第二水平高的值加起来}/*greater<int> g; //也可以考虑用升序的方式找sort(v.begin(),v.end(),g);for(int i = 0; i < n; i++){sum += v[(i * 2) + 1];}*/cout << sum;}}
// 64 位输出请用 printf("%lld")

2.删除公共字符

image-20230321183623326

解析:使用string类实例化两个字符串,需要使用getline函数输入字符串,因为C++中使用cin输入字符串遇到空格只会保留空格之前的,遇到回车的时候停止。通过将输入的第一个字符串中的每个字符依次分别和第二个字符串中的元素进行比较,如果遇到相同的字符,则直接删除掉第一个字符串中的字符元素,并继续比较。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main() {string s1;//第一个字符串string s2;//第二个字符串getline(cin,s1);getline(cin,s2);for(int i = 0; i < s2.size(); i++){// while(s1.find(s2[i]) != string::npos) //查找失败返回npos// {//     //找到之后删除//     s1.erase(s1.find(s2[i]),1);// }for(int j = 0; j < s1.size(); j++){if(s1[j] == s2[i]){//找到之后直接用erase删除s1.erase(j, 1);}}}cout << s1;return 0;
}

答案解析:本题如果使用传统的暴力查找方式,如判断第一个串的字符是否在第二个串中,在再挪动字符删除这个字符
的方式,效率为O(N^2),效率太低,很难让人满意。

  1. 将第二个字符串的字符都映射到一个hashtable数组中,用来判断一个字符在这个字符串。
  2. 判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可
    以考虑使用将不在字符添加到一个新字符串,最后返回新新字符串。
#include<iostream>
#include<string>
using namespace std;
int main()
{// 注意这里不能使用cin接收,因为cin遇到空格就结束了。// oj中IO输入字符串最好使用getline。string str1,str2;//cin>>str1;//cin>>str2;getline(cin, str1);getline(cin, str2);// 使用哈希映射思想先str2统计字符出现的次数int hashtable[256] = {0};for(size_t i = 0; i < str2.size(); ++i){hashtable[str2[i]]++;}// 遍历str1,str1[i]映射hashtable对应位置为0,则表示这个字符在// str2中没有出现过,则将他+=到ret。注意这里最好不要str1.erases(i)// 因为边遍历,边erase,容易出错。string ret;for(size_t i = 0; i < str1.size(); ++i){if(hashtable[str1[i]] == 0)ret += str1[i];}cout<<ret<<endl;return 0;
}

相关文章:

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

选择题 解析&#xff1a;在for循环的循环条件(y 123) && (x < 4)中 &#xff0c;&& 表示逻辑与&#xff0c;从左向右判断两边条件是否成立&#xff0c;只有当两边的条件都为真时&#xff0c;这条语句才为真。左边y 123是赋值语句&#xff0c;一直为真&…...

【网络安全软件】上海道宁与Cybereason为您提供未雨绸缪的攻击保护,终结对端点、整个企业以及网络上任何角落的网络攻击

Cybereason可收集 计算机网络内任何活动方面的数据 如运行当中的程序 被用户访问的文件以及 员工及任何获授权使用网络中的计算机人的 键盘输入和鼠标移动情况 Cybereason提供 即时结束网络攻击的精确度 在计算机、移动设备、服务器和云中 到战斗移动的任何地方 一、开…...

基于RK3568的Android11 适配 MIPI 屏幕

文章目录 前言一、mipi接口是什么?二、原理图三、屏幕点亮流程四、屏幕关键参数1.General Specification2. Power on/off sequence3.Timing五、屏幕初始化序列改写如何把原厂给的数据转换为设备需要的时序dcs小知识:初始化时序:退出时序:总结前言 在本小节会学习到如何适配…...

Ubuntu安装python

CentOS 安装 Python3 没什么坑&#xff0c;按照步骤一步步来就可以了。 但 Ubuntu 安装 Python3 的坑却不少&#xff0c;这里总结一下&#xff0c;避免以后继续踩坑。 我用的是 ubuntu16.04&#xff0c;安装最新版本的 Python3.8.3 第1步&#xff1a;安装编译环境 安装之前…...

django 运用pycharm的各种故障汇总(1)

一.用django入门第一个问题:pycharm的[community]社区版-免费开源与[professional]专业版注册收费两个版本:用django只能有[professional]版本便捷、专业; 解决方案的各种学习总结: 1.破解版:网上找了很多资料,基本已经没效果,不要报太大希望; 2.找中间途径然后有:Python 、…...

【设计模式】单例模式Singleton(Java)

文章目录定义类图Java经典实现懒汉Lazy Mode&#xff1a;饿汉Eager Mode&#xff1a;在饿汉下的多线程案例在懒汉下的多线程案例总结定义 单例模式&#xff08;单件模式&#xff09;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。——HeadFirst 单例模式通过过防…...

机器学习中的公平性

文章目录机器学习公平性评估指标群体公平性指标个人公平性指标引起机器学习模型不公平的潜在因素提升机器学习模型公平性的措施机器学习公平性 定义&#xff1a; 机器学习公平性主要研究如何通过解决或缓解“不公平”来增加模型的公平性&#xff0c;以及如何确保模型的输出结果…...

Docker镜像之Docker Compose讲解

文章目录1 docker-compose1.1 compose编排工具简介1.2 安装docker-compose1.3 编排启动镜像1.4 haproxy代理后端docker容器1.5 安装socat 直接操作socket控制haproxy1.6 compose中yml 配置指令参考1.6.1 简单命令1.6.2 build1.6.3 depends_on1.6.4 deploy1.6.5 logging1.6.6 ne…...

蓝桥杯30天真题冲刺|题解报告|第三十天

大家好&#xff0c;我是snippet&#xff0c;今天是我们这次蓝桥省赛前一起刷题的最后一天了&#xff0c;今天打了一场力扣周赛&#xff0c;前面3个题都是有思路的&#xff0c;第三个题只过了一半的案例&#xff0c;后面看完大佬们的题解彻悟&#xff0c;下面是我今天的题解 目录…...

配置 Git Husky 代码提交约束

介绍 Git Husky 是一个可以管理 Git Hooks 的工具&#xff0c;它可以帮助我们在代码提交的时候运行脚本&#xff0c;以确保代码提交符合特定的规范和约定。 在 Git 中&#xff0c;允许在操作特定的事件时执行特定的脚本&#xff0c;这些事件我们称之为 Hooks。 Git Husky 利…...

IntelliJ IDEA 2023.1 最新变化

文章目录IntelliJ IDEA 2023.1 最新变化一. 主要更新1. 新 UI 增强 测试版启用新 UI2. 在项目打开时更早提供 IDE 功能3. 更快地导入 Maven 项目4.后台提交检查5. Spring Security 匹配器和请求映射的导航 Ultimate二. 用户体验1. 全 IDE 缩放2. 保存多个工具窗口布局的选项3. …...

stm32学习笔记-9 USART串口

9 USART串口 文章目录9 USART串口9.1 串口通信协议9.2 stm32的片上外设-USART9.3 USART收发相关实验9.3.1 实验1&#xff1a;串口发送9.3.2 实验2&#xff1a;移植printf函数9.3.3 实验3&#xff1a;串口发送接收9.4 USART串口数据包9.5 USART数据包相关实验9.5.1 实验1&#x…...

【蓝桥杯】每日四道编程题(两道真题+两道模拟)| 第四天

专栏&#xff1a; 蓝桥杯——每日四道编程题&#xff08;两道真题两道模拟&#xff09; “蓝桥杯就要开始了&#xff0c;这些题刷到就是赚到” ₍ᐢ..ᐢ₎♡ 另一个专栏&#xff1a; 蓝桥杯——每日四道填空题&#xff08;两道真题两道模拟题&#xff09; 目录 专栏&#xff1…...

大家有没有时候觉得,递归,分治,回溯,傻傻分不清楚?

递归&#xff0c;分治&#xff0c;回溯的定义 递归&#xff08;Recursion&#xff09; 递归是一种解决问题的方法&#xff0c;它将一个问题分解成一个或多个较小的相同类型的子问题&#xff0c;然后通过递归调用自身来解决这些子问题。递归通常包括一个基本情况&#xff08;b…...

Java 8 - Lambda 表达式

1. 函数式接口 当一个接口中只有一个非 default 修饰的方法&#xff0c;这个接口就是一个函数式接口用 FunctionalInterface 标注 1&#xff09;只有一个抽象方法 FunctionalInterface public interface MyInterface {void print(int x); } 2&#xff09;只有一个抽象方法和…...

【Ruby学习笔记】4.Ruby 类和对象及类案例

前言 本章介绍Ruby的类和对象及类案例。 Ruby 类和对象 Ruby 是一种完美的面向对象编程语言。面向对象编程语言的特性包括&#xff1a; 数据封装数据抽象多态性继承 这些特性将在 面向对象的 Ruby 中进行讨论。 一个面向对象的程序&#xff0c;涉及到的类和对象。类是个别…...

分享一个计算表格内单元格合并的工具,支持行合并、列合并等常见场景

分享一个计算表格内单元格合并的工具&#xff0c;支持行合并、列合并等常见场景 效果图 安装 cj-toolkit-x/table-cell-merger 插件 npm i cj-toolkit-x/table-cell-merger使用方法 import {TableCellMerger} from "cj-toolkit-x/table-cell-merger" // 创建一个单…...

CUDA编程(三):Hello world

CUDA编程&#xff08;三&#xff09;&#xff1a;Hello worldCUDA编程Hello worldCUDA编程 CUDA是Compute Unified Device Architecture的缩写&#xff0c;由英伟达公司2007年开始推出&#xff0c;初衷是为GPU增加一个易用的编程接口&#xff0c;让开发者无需学习复杂的着色语…...

二十九、String的不可变性

一、String的基本特性 1.String:字符串&#xff0c;使用一对“”引起来表示 1)String s1 “hallo”; //字面量的定义方式 2)String 说 new String(“hello”)’ 2.String声明为final的&#xff0c;不可被继承。 3.String实现了Serialzable接口:表示字符串是支持序列化的。实…...

TCP服务器如何使用select处理多客户连接

TCP是一种面向连接的通信方式,一个TCP服务器难免会遇到同时处理多个用户的连接请求的问题,本文用一个简化的实例说明如何在一个TCP服务器程序中,使用select处理同时出现的多个客户连接,文章给出了程序源代码,本文假定读者已经具备了基本的socket编程知识,熟悉基本的服务器…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...