OJ(while+cin.get()判断结束)

别再傻傻用scanf了!C++刷题时用这两行代码,cin/cout速度直接起飞 本文揭秘了C++算法竞赛中提升cin/cout速度的两行关键代码:ios::sync_with_stdio(false)cin.tie(nullptr)。通过解除C++与C的IO同步及cin与cout的绑定,输入输出效率可提升4倍,帮助选手避免TLE,同时保持代码的现代性和安全性。 阅读详情

今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。

描述

给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。

输入

包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。

输出

输出N行。 第一行和输入相同。 剩下的N-1行中,上一行的第一个单词被放到最后。每个单词之间有一个空格。

样例输入

Please think about it carefully

样例输出

Please think about it carefully
think about it carefully Please
about it carefully Please think
it carefully Please think about
carefully Please think about it

思路一

开始的时候,用while(cin>>str)来读每一个单词,但是cin不遇到EOF或者错误输入是不会停止的,所以光靠cin>>这种格式化的输入操作是不够的,考虑加上cin.get()这种非格式化的输入操作,在读取一个字符串后,用一次cin.get(),看是不是’\n’,如果是,就break。

代码一

#include "stdafx.h"
#include <iostream>
#include <queue>
#include <string>
using namespace std;

void display(const 
C++ 输入输出练习总结 while循环条件:输入运算符>>,它负责将数据从cin读到a并返回cin(的调用结果都是返回其左侧运算对象)。为了对条件求值,cin被istream operator bool类型转换函数隐式地执行了转换,成为bool类型。如果cin的条件状态是good,则该函数返回为真,否则返回为假。在循环输入过程中,cin在遇到文件结束符,或者遇到无效输入时(输入非整数),cin的状态会变成无效,退出循环。 阅读详情

相关推荐

c++ 中的 cin.get()函数

#include <iostream> #include <sstream> #include <fstream> using namespace std; int main() { char ch; ch = cin.get();//从标准输入接受一个字符 while(ch != ' ') //只要这个字符不是' '空格即可 { cout << ch <.

digitalkee的博客 2万+

C++ Cin判断输入结束

cin可以用来从键盘输入数据;将标准输入定向为文件后,cin也可以用来从文件中读入数据。在输入数据的多少不确定,且没有结束标志的情况下。若是从文件中读取数据,到达文件末尾就读取结束了。从控制台读取数据时,可以通过输入特殊的控制字符: 在window系统中,通过键盘输入时,按Ctrl+Z组合键后再按回车键,就代表输入结束。 在UNIX/Linux/Mac OS系统中,Ctrl+D代表输入结束...

Estelle 1万+

【华为OD机试真题 新系统】1046、奇偶三数之和 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1046、奇偶三数之和 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od

KJ.JK 893

while循环输入字符串中以Esc键作为循环结束标识——scanf读取带空格字符串

需求在一个字符串输入循环中,判断输入的是字符串还是Esc按键,如果是Esc按键则结束循环。

一棵小草的空间 5761

python学习 lesson5while循环和字符串

一、while循环 循环示意图 循环的作用就是让 指定的代码 重复的执行,while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行。 while 语句基本语法 while 条件语句: 满足条件执行的语句 else: 不满足条件执行的语句while 条件语句: 满足条件执行的语句 else: 不满足条件执行的语句 eg: 做100内的加法 1+2+3...

飞翔的罗老汉 717

Java学习篇六——循环结构之while语句

写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书。第一本:《Java 编程指南》,[美] Budi Kurniawan 著,闫斌 贺莲 译。第二本:《第一行代码 Java 视频讲解版》,李兴华 马云涛 著 与 while 有关的有两种语句 第一种:while语句 whlie (判断语句) { statement; changeCycle; } while...

Yin_keepLearning的博客 389

判断输入是否结束(不给定输入个数,oj常见)

cin: while( cin >> x ){ } scanf: while( scanf( "%d" , &x ) != EOF){ } gets/getchar: while( gets(str) ){ } ——!容易忽视的地方!!! 当用scanf输入完数据后,后面又用gets输入字符串或者用getchar输入字符,如下代码: while(scanf("%d%d",&a,&b)!=EOF){ ... gets(str);

shine的博客 3010

(算法)多组测试数据的测试方式--C++可用

描述 在各种OJ平台进行测试,往往对一段代码有多组数据的测试 利用while循环,循环输入达到多组数据测试的目的 常用方法 while(1){ //... } while(scanf("%d",&a)!=EOF){ //... } while(gets(a)){ //... } while (cin>>a){ //... } ...

sinat_40546227的博客 3239

C++循环结构全解析:从语法到竞赛真题实战

循环是编程语言中实现重复执行的核心控制结构,其本质是通过条件判断来控制代码块的重复执行流程。在C++中,for、while和do-while三种循环结构分别对应着已知次数迭代、条件驱动迭代和至少执行一次的场景,理解其底层机制是编写高效、正确代码的基础。掌握循环控制、边界条件处理和效率优化,对于构建算法逻辑、处理批量数据以及实现复杂业务流具有关键的技术价值,尤其在数据处理、游戏逻辑和自动化脚本等应用场景中不可或缺。本文聚焦于信息素养大赛等编程竞赛中的典型问题,通过真题案例深入剖析循环的实战应用与常见陷阱,帮助

weixin_34356555的博客 389

华为OD机试新系统真题【迷宫相遇】

华为OD机试 新系统真题【迷宫相遇】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【迷宫相遇】多语言题解。

qq_45776114的博客 688

C++编程思维训练:汽水瓶问题的模拟、递归与数学解法详解

循环和递归是编程中控制程序执行流程的核心概念,它们通过重复执行特定代码块或函数自身调用来解决问题,是算法设计与逻辑实现的基础。理解其原理对于掌握程序结构、提升代码效率至关重要,在数据处理、状态模拟等场景应用广泛。本文以经典的“汽水瓶问题”为例,深入探讨如何运用循环模拟兑换过程,并通过递归定义状态转移关系,同时分析其背后的数学规律。文章结合C++实现,详细解析了模拟法、递归解法和公式优化等多种方案,并重点讨论了边界条件处理、代码健壮性以及从实际问题到算法模型的抽象思维训练,旨在帮助读者巩固基础编程能力,提升将

weixin_30596343的博客 816

华为OD机试新系统真题【SQL记录拆分】

华为OD机试 新系统真题【SQL记录拆分】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【SQL记录拆分】多语言题解.

qq_45776114的博客 364

2026csp-j初赛必记代码

【代码】csp j初赛必记代码。

qq_36107829的博客 435

C++循环编程实战:从信息素养大赛真题解析到问题抽象与代码实现

循环是编程语言中控制程序重复执行的核心结构,其本质是对一组具有规律的数据进行遍历和处理。理解循环的原理,关键在于掌握循环的起点、终点、迭代步长以及循环体内的操作逻辑。在C++中,for循环、while循环和do...while循环各有其适用场景,其中for循环因其结构清晰、控制精确,在算法竞赛和数据处理中应用最为广泛。掌握循环编程的技术价值在于能够将复杂的现实问题,如数列生成、图形打印、数字统计等,高效地抽象为可执行的代码模型。本文以一道典型的数字矩阵生成为例,深入剖析了如何将问题分解、识别模式并最终实现健

weixin_34116110的博客 413

拓扑排序实战:从家谱树到依赖关系处理的算法精讲

拓扑排序是处理有向无环图中依赖关系的关键算法,其核心原理在于通过管理节点的入度,将复杂的偏序关系转化为线性的执行序列。该算法的技术价值在于为存在先后约束的任务调度提供了系统性的解决方案,广泛应用于课程安排、软件包依赖管理和项目构建等场景。以经典的“家谱树”问题为例,通过Kahn算法可以高效实现拓扑排序,其中涉及邻接表建图、入度维护和队列操作等核心步骤。理解并掌握拓扑排序,不仅能解决算法竞赛中的特定题目,更能提升处理实际工程中复杂依赖关系的能力。

weixin_33694620的博客 291

编程竞赛累乘题解析:从数据类型陷阱到边界条件处理

在编程竞赛和算法学习中,整数运算与循环控制是基础但关键的概念。整数运算涉及数据类型的选择,如int和long long,其核心原理在于不同数据类型的存储范围限制,直接决定了程序能否正确处理大数运算而不溢出。理解这一原理的技术价值在于提升代码的健壮性,避免因数据溢出导致的隐蔽错误。在实际应用场景中,如计算阶乘、累加或动态规划中的状态转移,合理选择数据类型是保证结果准确的前提。本文以累乘(阶乘)计算为例,深入探讨了数据类型陷阱和循环边界条件这两个热词,展示了如何通过系统分析输入输出、预判数据范围来规避常见错误,

weixin_34199335的博客 646

算法设计与分析

详见补充迭代器迭代器是,作用相当于,用来遍历、访问、修改容器里的元素。v.end()*itit++1. list(链表)2. map /unordered_map(键值对)要用->it->secondC++11 最简单写法不用写迭代器类型,更简单的。

2401_86043214的博客 673

从算法竞赛到工程实践:构建鲁棒性代码的防御性编程指南

在软件开发和算法竞赛中,程序的鲁棒性是衡量代码质量的关键指标,它决定了软件在异常输入和压力环境下的稳定表现。鲁棒性的核心原理在于防御性编程,即通过预设验证机制和异常处理流程,确保程序在遇到未预期数据时仍能可控运行。这一技术价值不仅体现在避免系统崩溃和数据损坏,更关乎软件的安全性和可靠性。在应用场景上,无论是线上评测系统(OJ)中的算法竞赛,还是处理复杂外部输入的业务系统开发,鲁棒性都是保障功能正确性的基石。本文以典型竞赛失败案例“华南赛预四决无”为切入点,深入剖析输入验证、状态机设计和边界条件处理中的常见陷

weixin_33851604的博客 355
上一篇: OJ(string截取与初始化)
下一篇: OJ 正则二叉树(使用递归)
Stark_JC
博客等级 码龄9年 13粉丝 50原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值