蓝桥杯-洛谷刷题-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,一经查实,立即删除!

相关文章

元器件封装

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

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…

【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视图…

[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;"><…

【WPF】Prism库学习(一)

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

The Planets: Earth -- 练习

环境搭建 该靶场环境来自Vulnhub -------- Difficulty: Easy 靶机与Kali的IP地址只需要在同一局域网即可&#xff08;同一个网段,即两虚拟机处于同一网络模式&#xff09;&#xff0c;所以需要调整KALI和靶场的网络模式&#xff0c;为了方便测试本地采用NAT模式。 注意&…

C/C++语言基础--initializer_list表达式、tuple元组、pair对组简介

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 initializer_list表达式、tuple元组、pair对组再C日常还是比较常用的&#xff0c;尤其是对组在刷算法还是挺好用的&#xff0c;这里做一个简介&#xff1b;这三个语法结合C17的结构化绑定会更好用&#xff…

『VUE』27. 透传属性与inheritAttrs(详细图文注释)

目录 什么是透传属性&#xff08;Forwarding Attributes&#xff09;使用条件唯一根节点禁用透传属性继承总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 什么是透传属性&#xff08;Forwarding Attributes&#xff09; 在 V…

演员王子辰—专注革命题材 《前行者》后再出发

2021年10月22日在北京卫视播出的由张鲁一、聂远等人主演的电视剧《前行者》&#xff0c;讲述了在二十世纪三十年代初&#xff0c;因叛徒出卖&#xff0c;我上海地下党组织遭到严重破坏&#xff0c;革命事业陷入一片白色恐怖之中。我党情报员马天目刚从法国归来&#xff0c;临危…

【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”

【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉” 零、报错 在使用DiskGenius对磁盘分区进行调整时&#xff0c;DiskGenius检查出磁盘报错&#xff0c;报错信息&#xff1a;文件使用的簇被标记为空闲或与其它文件有交叉&#xff0c;…

远程控制步骤

当远在千里之外的朋友想求助你帮他找到他电脑上的文件、或者是给他安装软件时。但是你给他说了他又找不到&#xff0c;那么这时你就可以通过控制对方的电脑去做一系列的操作。 如何远程控制对方的电脑非常关键。 方法一&#xff08;Windows自带远程桌面功能&#xff09;&#…

蓝桥杯——数组

1、移动数组元素 package day3;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] arr {1,2,3,4,5,6};int k 2;int[] arr_new f(arr,k);for (int i : arr_new) {System.out.print(i",");}//或System.out.println();St…

【大数据技术基础 | 实验十】Hive实验:部署Hive

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;安装部署&#xff08;二&#xff09;配置HDFS&#xff08;三&#xff09;启动Hive 六、实验结果&#xff08;一&#xff09;启动结果&#xff08;二&#xff09;Hive基…

MQTT从入门到精通之MQTT Dashboard

MQTT Dashboard 1 Dashboard简介 EMQX 提供了一个内置的管理控制台&#xff0c;即 EMQX Dashboard。方便用户通过 Web 页面就能轻松管理和监控 EMQX 集群&#xff0c;并配置和使用所需的各项功能。 访问地址&#xff1a;http://ip:18083 首次登录访问账号&#xff1a;admin…

[Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明

官方说明 功能说明 参数 类型 功能 pbyDataSrcPOINTER TO BYTE指向源数组指针uiSizeUINT要移动数据的BYTE数pbyDataDesPOINTER TO BYTE指向目标数组指针 实例应用-ST IF SYSTEM_CLOCK.AlwaysTrue THENCASE iAutoState OF0: //读写完成信号在下次读写信号的上升沿或复位信号…

推荐一款流程图和图表绘制工具:WizFlow Flowcharter Pro

WizFlow Flowcharter是一款易于使用、功能丰富的Windows流程图和图表绘制工具。它允许用户使用超过一百种预定义的形状和箭头定义形状“样式”。您可以将自己的样式保存在图表模板中&#xff0c;以建立自己的绘图方法。WizFlow附带了完整的流程图模板&#xff0c;以帮助您入门。…