蓝桥杯-洛谷刷题-day3(C++)

目录

1.忽略回车的字符串输入

        i.getline()

        ii.逐个字符的识别再输入

2.获取绝对值abs()

3.做题时的误区

4.多个变量的某一个到达判断条件

        i.max()

5.[NOIP2016 提高组] 玩具谜题

        i.代码 

6.逻辑上的圆圈

        i.有限个数n的数组

7.数组的定义

        i.动态数组


1.忽略回车的字符串输入

        i.getline()

        借助getline()函数,通过一定的操作可以实现忽略回车的输入,

string a;
string line;
while (getline(cin, line))a += line;
cout << a << endl;

        拓:在此循环中,输入ctrl + Z,getline会返回false. 

        ii.逐个字符的识别再输入

string a;
char tmp;
while (1) {cin >> tmp;if (终止条件,如tmp == '0') break;else a += tmp;
}

2.获取绝对值abs()

#include<cmath>
cout << abs(2-3);

3.做题时的误区

        i.

        当题目需要 ABC的输入,并指出输入D即为终止时,并不代表可以直接

if(ch == 'D')break;

else str += ch;

        题目检测时给予的输入不只有ABCD.

        ii.

        函数的重复度,会影响评判。

4.多个变量的某一个到达判断条件

        i.max()

        如,a,b只要有一个到达21,之后就要进行别的操作,使用(max(a, b) >= 21),明显比用((a == 21) || (b == 21))要ok很多。

5.[NOIP2016 提高组] 玩具谜题

        i.代码 

#include <iostream>  
#include <iomanip>  //操纵器,个位数字,多位输出;保留n位小数输出
#include <cmath>    //向上取整函数ceil
#include <string>using namespace std;//人
class Man
{
public://朝向int direction;//职称string name;void setMan(int di, string na){direction = di;name = na;}
};
//命令
class Command
{
public://左右int lefOrRi;//步数int number;void setCommand(int leR, int num){lefOrRi = leR;number = num;}
};void CheckMan(Man* man, Command* com, int n, int m)
{//man以逆时针站好,0朝里,左递减,右递增;1朝外,左递增,右递减。//左为0,右为1int p = 0;//指向当前的Manfor (int i = 0; i < m; i++){//先看命令的左右,再看圈里的朝向,p是man的下标,i是com的下标if (com[i].lefOrRi == 0){if (man[p].direction == 0){//优化的点,排除循环的冗长,一步到位p = p - com[i].number;if (p < 0)p = n + p;}else if (man[p].direction == 1){//while (com[i].number--)//p = (p + 1) % n;p = (p + com[i].number) % n;}}//命令朝右else if (com[i].lefOrRi == 1){//朝里if (man[p].direction == 0){/*while (com[i].number--){p = (p + 1) % n;}*/p = (p + com[i].number) % n;}else if (man[p].direction == 1){/*while (com[i].number--){p--;if (p < 0)p = n + p;}*/p = p - com[i].number;if (p < 0)p = n + p;}}}cout << man[p].name;
}void testlan()
{//人数n,指令数mint n = 0, m = 0;cin >> n >> m;//短暂存储方向和职业,指令左右和个数int di;string na;int leR, num;//建立人物序列,指令序列//Man man[n];常规数组定义,其大小,在编译阶段就是已知的需要动态分配内存。Man* man = new Man[n];for (int i = 0; i < n; i++){cin >> di >> na;man[i].setMan(di, na);}Command* com = new Command[m];for (int i = 0; i < m; i++){cin >> leR >> num;com[i].setCommand(leR, num);}CheckMan(man, com, n, m);
}int main()
{testlan();return 0;
}

        以下6.7,总结了一些要点。 

6.逻辑上的圆圈

        i.有限个数n的数组

        p = (p + number) % n;

        //p指示数组下标

        //number指示移动的步数

        //通过取余,可以实现,将在储存结构上的直线前进,等效为在逻辑上的转圈。

        以上是加法的(这其实是数据结构,栈与队列部分的知识点),当然就有减法的情况,

        p = p - number;
        if (p < 0)
                p = n + p;

        可优化

        p = (p - number + n) % n;

        这没什么好说的。

7.数组的定义

        i.动态数组

        int n;
        cin >> n;
        int a[n];

        上文代码会报错,这种常规数组定义在编译阶段就完成了创建(上文数组大小需要在运行阶段才能确定,这是矛盾的), [] 内只能是常数。

        要实现上文这种,在运行后确立数组大小的形式,就是建立动态数组。

        · 法一----使用vector

        int n;

        cin >> n;

        vector<int> a(n);

        · 法二----new关键字(不如法一安全)

        int* a = new int[n];

        delete[] a;

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

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

相关文章

fast-api后端 + fetch 前端流式文字响应

fast-api后端 fetch 前端流式文字响应 fast-api后台接口流式响应 前端fetch 流式文本数据处理 fast-api后台接口 流式响应 from fastapi.responses import StreamingResponse from tqdm import tqdm from pydantic import BaseModelclass ItemDataSingle(BaseModel):data: …

作用域、生命周期和链接性的英文解释

作用域 - Scope Scope refers to the region of a program where a variable, function, or other identifier can be accessed or referenced. 生命周期 - Lifetime (or Duration in some contexts) Lifetime describes the period during which a variable or object exists…

元器件封装

元器件封装类型 为什么越来越多用贴片元件&#xff0c;而不是插件元件 为什么越来越多用贴片元件&#xff0c;而不是插件元件 1.体积小、质量小、容易保存和运输&#xff1b; 2.容易焊接和拆卸。抗震效果好。 贴片元件不用过孔&#xff0c;用锡少。直插元件最麻烦的就是拆卸&a…

【jvm】为什么要用元空间替代永久代

目录 1. 说明2. 永久代的限制与问题2.1 内存管理限制2.2 垃圾收集效率2.3 类的卸载问题 3. 元空间的优势 1. 说明 1.Java使用元空间替代永久代&#xff0c;这一变化主要源于永久代在实现上存在的限制和问题&#xff0c;以及元空间所提供的更优性能和更高灵活性。2.Java使用元空…

基本数据类型:Kotlin、Dart (Flutter)、Java 和 C++ 的比较

文章目录 一、基本数据类型的比较1.1 整数类型1.2 浮点类型1.3 字符类型1.4 布尔类型1.5 小结 二、有符号和无符号整数三、二进制补码表示四、精度丢失问题五、结论 在编程语言中&#xff0c;基本数据类型是构建更复杂数据结构的基础。在本文中&#xff0c;我们将比较 Kotlin、…

C++ 的发展

目录 C 的发展总结&#xff1a;​编辑 1. C 的早期发展&#xff08;1979-1985&#xff09; 2. C 标准化过程&#xff08;1985-1998&#xff09; 3. C 标准演化&#xff08;2003-2011&#xff09; 4. C11&#xff08;2011年&#xff09; 5. C14&#xff08;2014年&#xf…

《Python 网络爬虫》

一、引言 在当今信息时代&#xff0c;互联网上蕴含着大量有价值的数据。网络爬虫作为一种自动获取网页数据的技术手段&#xff0c;在数据挖掘、信息检索、市场分析等领域发挥着重要作用。Python 由于其简洁易学、功能强大的特点&#xff0c;成为了网络爬虫开发的热门语言之一。…

【MySQL】MySQL在Centos环境安装

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; MySQL 目录 &#x1f308;前言&#x1f525;卸载不要的环境&#x1f525;检查系统安装包&#x1f525;卸载这些默认安装包&#x1f525;获取mysql官方yum源&#x1f525;安装mysql yum源…

【算法】动态规划中01背包问题解析

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

Linux开发工具:Vim 与 gcc,打造高效编程的魔法双剑

文章目录 一、初识Vim模式 二、vim基本操作2.1基础操作2.2命令模式/正常模式2.2.1光标定位2.2.2复制粘贴、删除2.2.3撤销2.2.4替换字符2.2.5替换模式 2.3底行模式2.3.1退出vim和**保存文件**2.3.2定位文本字符串2.3.3命令2.3.4实现分屏2.3.5替换指定字符串 2.4补充指令2.4.1视图…

Spring Boot 启动时修改上下文

Spring Boot 启动时修改上下文 为了让项目在启东时&#xff0c;加载到封装的JAR中的国际化文件在封装JAR是增加以下配置类可用于更改启动上下文中的信息 import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContextInitializer; i…

[JAVA]MyBatis框架—如何获取SqlSession对象实现数据交互(基础篇)

假设我们要查询数据库的用户信息&#xff0c;在MyBatis框架中&#xff0c;首先需要通过SqlSessionFactory创建SqlSession&#xff0c;然后才能使用SqlSession获取对应的Mapper接口&#xff0c;进而执行查询操作 在前一章我们学习了如何创建MyBatis的配置文件mybatis.config.xm…

Linux基础开发工具使用

目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源&#xff08;可选&#xff09; 1.3 工具的搜索/查看/安装/卸载 1.4 优势 2. vim编辑器 2.1 vi和vim 2.2 三种常用模式和操作 2.3 配置vim 3. Linux编译器-gcc/g 4. Linux调试器-gdb 5. make和Makefile 6.…

群控系统服务端开发模式-应用开发-前端图片格式功能开发

一、添加视图 在根目录下src文件夹下views文件夹下param文件夹下grade文件夹下&#xff0c;新建index.vue&#xff0c;代码如下 <template><div class"app-container"><div class"filter-container" style"float:left;"><…

wordpress建外贸独立站常用的多语言插件

WordPress是一个功能强大的内容管理系统&#xff0c;对于外贸独立站来说&#xff0c;多语言支持是非常重要的功能。以下是一些常用的WordPress多语言插件&#xff1a; 1. WPML (WordPress Multilingual) 这是最流行且功能最全面的多语言插件之一。它支持翻译整个网站&#xf…

RabbitMQ 通道(Channel)详解:方法使用、消息确认与拒绝

RabbitMQ 是一个强大且灵活的消息代理&#xff08;message broker&#xff09;&#xff0c;它支持多种消息协议。在 RabbitMQ 的交互模型中&#xff0c;通道&#xff08;Channel&#xff09;是一个核心概念。RabbitMQ 中的通道是 TCP 连接内的虚拟连接&#xff0c;允许在单个 T…

SOC Boot学习(三)——boot流程

一、PBL 初始化硬件 CLK初始化 Cpu Cache/MMU加载XBL_SEC以及XBL_LOADER&#xff0c;并且进行鉴别 二、XBL Loader(SBL) XBL ConfigPMIC 驱动DDR 初始化 training初始化SMEM加载各种image&#xff08;AOP、QSEE、QHEE、ABL&#xff09;并且验证 三、XBL Core&#xff08;U…

算力100问☞第4问:算力的构成元素有哪些?

算力的构成元素是一个多维度且相互交织的体系&#xff0c;它融合了硬件基础设施、软件优化策略、数据处理效能以及分布式计算技术等多个层面&#xff0c;共同塑造了强大的计算能力。具体如下&#xff1a; 1、硬件基础设施 中央处理器&#xff08;CPU&#xff09;&#xff1a;…

【WPF】Prism库学习(一)

Prism介绍 1. Prism框架概述&#xff1a; Prism是一个用于构建松耦合、可维护和可测试的XAML应用程序的框架。它支持WPF、.NET MAUI、Uno Platform和Xamarin Forms等多个平台。对于每个平台&#xff0c;Prism都有单独的发布版本&#xff0c;并且它们在不同的时间线上独立开发。…

《JavaScript 前端开发》

一、引言 在当今的互联网时代&#xff0c;前端开发扮演着至关重要的角色。JavaScript 作为前端开发的核心语言&#xff0c;为网页带来了丰富的交互性和动态效果。本文将深入探讨 JavaScript 前端开发的各个方面&#xff0c;包括语言基础、核心概念、开发工具、框架应用以及最佳…