C++算法题中的输入输出形式(I/O)

本文主要帮助刷leetcode题型快速适应完整带输入输出的题(机试、考试、比赛等)

接收能用cin就用cin 。cin 自动分割单词 的特性(cin 读取字符串时会自动跳过空格 / 换行,将连续非空格字符作为一个 “单词”)

一、单组输入(仅一组数据)

1. 单个整数 / 浮点数
// 输入:5
int a;
cin >> a;// 输入:3.14
double b;
cin >> b;

2. 多个整数 / 浮点数(空格分隔)
// 输入:1 2 3 4
int a, b, c, d;
cin >> a >> b >> c >> d;// 输入:1.5 2.0 3.7
double x, y, z;
cin >> x >> y >> z;
3. 单个字符串(无空格)
// 输入:hello
string s;
cin >> s;  // cin遇空格/换行终止,适合无空格字符串
4. 一行带空格的字符串
// 输入:hello world
string s;
getline(cin, s);  // 读取整行(包括空格),需注意前面是否有残留换行符

二、多组输入(已知行数)

1. 先输入行数 n,再输入 n 组数据
// 输入:
// 3
// 1 2
// 3 4
// 5 6
int n;
cin >> n;
while (n--) {int a, b;cin >> a >> b;// 处理每组a,b
}
2. 已知矩阵行列数(如 n 行 m 列)
// 输入:
// 2 3
// 1 2 3
// 4 5 6
int n, m;
cin >> n >> m;
vector<vector<int>> mat(n, vector<int>(m));
for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> mat[i][j];}
}

三、多组输入(未知行数,以 EOF 结束)

1. 持续读取直到输入结束(控制台按Ctrl+Z终止)
// 输入:
// 1 2
// 3 4
// 5 6
// (Ctrl+Z+回车结束)
int a, b;
while (cin >> a >> b) {  // cin读取失败时返回false// 处理每组a,b
}
2. 读取未知行数的字符串(每行一个)
// 输入:
// first line
// second line
// third line
// (Ctrl+Z+回车结束)
string s;
while (getline(cin, s)) {  // getline读取失败时返回false// 处理每行s
}

四、多组输入(以特定值终止)

1. 以 0 0 或 - 1 -1 等特殊值结束
// 输入:
// 1 2
// 3 4
// 0 0  (终止标志)
int a, b;
while (cin >> a >> b) {if (a == 0 && b == 0) break;  // 遇到终止标志退出// 处理每组a,b
}
2. 以空行终止(字符串输入)
// 输入:
// hello
// world
// (空行)
string s;
while (getline(cin, s)) {if (s.empty()) break;  // 空行终止// 处理每行s
}

五、字符串与数值混合输入

1. 一行中包含字符串和整数
// 输入:abc 123 def 456
string s1, s2;
int a, b;
cin >> s1 >> a >> s2 >> b;
2. 先读整数,再读带空格的字符串(需处理残留换行符)
// 输入:
// 2
// hello world
// test case
int n;
cin >> n;
cin.ignore();  // 忽略n后的换行符,否则getline会读空行
while (n--) {string s;getline(cin, s);// 处理s
}

六、特殊分隔符输入(非空格 / 换行)

1. 逗号分隔的整数
// 输入:1,2,3,4,5
string s;
getline(cin, s);
replace(s.begin(), s.end(), ',', ' ');  // 逗号替换为空格
stringstream ss(s);  // 用stringstream解析
int x;
while (ss >> x) {// 依次读取1,2,3,4,5
}
2. 冒号分隔的键值对
// 输入:a:1 b:2 c:3
string s;
while (cin >> s) {size_t colon = s.find(':');string key = s.substr(0, colon);int val = stoi(s.substr(colon + 1));// 处理key和val
}

七、大数据量输入(优化速度)

当输入数据量极大(如 1e5+)时,用cin可能超时,需优化:

// 方法1:关闭cin同步(与stdio兼容)
ios::sync_with_stdio(false);
cin.tie(0);
// 之后正常用cin >> ...// 方法2:用scanf(速度更快)
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {// 处理a,b
}

八、输出常见形式

1. 单个 / 多个值(空格分隔,换行结尾)
int a = 1, b = 2;
cout << a << " " << b << endl;  // 输出:1 2
2. 数组 / 矩阵输出
vector<int> arr = {1,2,3,4};
for (int x : arr) {cout << x << " ";  // 输出:1 2 3 4 (末尾多一个空格,机试通常不报错)
}
cout << endl;// 矩阵(每行换行)
vector<vector<int>> mat = {{1,2},{3,4}};
for (auto& row : mat) {for (int x : row) {cout << x << " ";}cout << endl;
}
3. 字符串输出(保留空格)
string s = "hello world";
cout << s << endl;  // 输出:hello world
4. 无换行连续输出
// 输出:1234(无空格无换行)
cout << 1 << 2 << 3 << 4;

以上涵盖了算法题中 95% 以上的输入输出场景,核心是根据输入格式选择cin/scanf(数值 / 无空格字符串)或getline(带空格字符串 / 整行),并注意处理多组输入的终止条件。

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

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

相关文章

【左程云算法09】栈的入门题目-最小栈

目录 栈的入门题目-最小栈 代码演示 视频链接 算法讲解015【入门】栈的入门题目-最小栈 Leecode155 栈的入门题目-最小栈 实现一个getmin方法&#xff08;高效方法&#xff0c;即不用遍历&#xff09;&#xff0c;希望能实现O&#xff08;1&#xff09; 做法&#xff1a…

Grafana与Prometheus实战

&#x1f31f;Grafana的Dashboard的权限管理 创建团队 创建用户 设置团队权限 &#x1f31f;Prometheus启用https及认证功能 自建ca的证书 准备证书目录 mkdir /app/tools/prometheus-2.53.4.linux-amd64/certs cd /app/tools/prometheus-2.53.4.linux-amd64/certs生成ca的…

FPGA交通灯设计报告(源码+管脚约束+实物图+设计报告)

基于FPGA的交通灯设计 摘要 本设计采用FPGA技术实现了一个智能交通灯控制系统。系统以Verilog HDL为设计语言,在FPGA平台上实现了交通灯的自动控制、数码管倒计时显示、紧急情况处理等功能。通过合理的状态机设计和模块化编程,系统具有良好的实时性、可靠性和可扩展性,能够…

技术论文分析分析论文《计算机病毒判定专家系统原理与设计》思考其在游戏中的应用

论文原文的引言主要有两大部分的内容&#xff1a;介绍计算机病毒&#xff0c;明确本文使用的病毒分类方式&#xff1b;分析传统计算机病毒检测存在的弊端。对于计算机病毒的定义&#xff0c;文中给出的定义比较严谨&#xff0c;我自己查了一下现在百度百科的定义&#xff0c;两…

《Unity项目实战:动态加载引发的显存危机全链路排查与重构实践》

从动态光影那流光溢彩、仿佛赋予虚拟世界真实质感的绚丽效果—这得益于Unity引擎强大的HDRP管线对光照路径的精准模拟,到物理引擎驱动的物体碰撞精准到毫厘的物理反馈—依托Unity Physics模块对刚体动力学的毫秒级计算,再到能够依据不同设备性能自动适配的画质表现—通过Unit…

智慧水库综合管理系统平台御控物联网解决方案

一、行业背景与痛点分析水库作为防洪、灌溉、供水、发电及生态保护的核心基础设施&#xff0c;其管理效率直接关系到区域水资源安全与可持续发展。然而&#xff0c;传统水库管理模式存在四大核心痛点&#xff1a;数据孤岛严重&#xff1a;水位、雨量、水质、设备状态等数据分散…

使用nvm安装Node.js18以下报错解决方案——The system cannot find the file specified.

使用 nvm 安装 Node.js 18以下 报错解决方案 在前端开发过程中&#xff0c;常常需要针对不同项目切换 Node.js 版本。nvm&#xff08;Node Version Manager&#xff09;是最常用的工具。但最近在尝试安装 Node.js 14 版本时&#xff0c;遇到了奇怪的错误。 问题描述 使用 nv…

在Excel和WPS表格中快速复制上一行内容

有的时候我们在Excel和WPS表格中想复制上一行对应单元格、连续区域或整行的内容&#xff0c;只需要在当前行拖动鼠标左键选中相关区域&#xff0c;然后按CtrlD键即可将上一行对应位置的内容复制过来——需要注意的是&#xff0c;如果当前行有数据&#xff0c;这些数据会直接被覆…

408学习之c语言(递归与函数)

今天主要学习了递归与函数的相关内容&#xff0c;下面将我今天所学知识与所写代码分享给大家 递归核心要点 递归三要素 基准条件&#xff08;明确终止条件&#xff09; 递归调用&#xff08;逐步分解问题&#xff09; 收敛性&#xff08;确保每次递归都向基准条件靠近&#xff…

swVBA自学笔记016、Solidworks API Help 帮助文档的(三大版块)

目录1. Namespace (命名空间) 版块2. Interface (接口) 版块3. Members (接口成员) 版块4、总结关系5、如果你感觉上面说的过于简单&#xff0c;请往下看!6、示例链接→SOLIDWORKS API Help 20197、需要注意的是&#xff0c;带“I”的对象表示&#xff1a;接口1. Namespace (命…

通俗易懂地讲解JAVA的BIO、NIO、AIO

理解Java的I/O模型&#xff08;BIO、NIO、AIO&#xff09;对于构建高性能网络应用至关重要 &#x1f9e0; 通俗理解&#xff1a;快递站的故事 想象一个快递站&#xff1a; • BIO&#xff1a;就像快递站为每一个包裹都安排一位专员。专员从接到包裹到处理完&#xff08;签收、…

LabVIEW 泵轮检测系统

在汽车行业&#xff0c;泵轮作为液力变矩器关键部件&#xff0c;其质量检测极为重要。传统手工检测泵轮效率低且误差大&#xff0c;为此构建基于 LabVIEW 与西门子硬件结合的泵轮检测系统。 应用场景 聚焦汽车零部件生产车间&#xff0c;对泵轮总成进行出厂前检测。在液力变矩…

2025年8月月赛 T2 T3

一. 七天假日 T2原思路&#xff1a;直接计算左右括号的数量&#xff0c;然后直接输出他们的差改进思路&#xff1a; 用d值记录截止到当前位置&#xff0c;还需要多少个右括号可以满足非法要求cur&#xff1a;截止到当前位置&#xff0c;已经有多少个右括号sum是右括号位置的前缀…

数据结构----栈的顺序存储(顺序栈)

栈的特点&#xff1a;先进后出栈的操作&#xff1a;用数组进行存储&#xff08;1&#xff09;初始化&#xff1a;//栈 typedef struct {int *data;//指针模拟分配数组int top;//栈“顶”指针 }Stack; //初始化 Stack InitStack(){Stack s;//给数组分配空间s.data (int*)malloc…

React Hooks原理深度解析与高级应用模式

React Hooks原理深度解析与高级应用模式 引言 React Hooks自16.8版本引入以来&#xff0c;彻底改变了我们编写React组件的方式。然而&#xff0c;很多开发者仅仅停留在使用层面&#xff0c;对Hooks的实现原理和高级应用模式了解不深。本文将深入探讨Hooks的工作原理、自定义Hoo…

兼职网|基于SpringBoot和Vue的蜗牛兼职网(源码+数据库+文档)

项目介绍 : SpringbootMavenMybatis PlusVue Element UIMysql 开发的前后端分离的蜗牛兼职网&#xff0c;项目分为管理端和用户端和企业端。 项目演示: 基于SpringBoot和Vue的蜗牛兼职网 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可…

TDengine 聚合函数 LEASTSQUARES 用户手册

LEASTSQUARES 函数用户手册 函数定义 LEASTSQUARES(expr, start_val, step_val)功能说明 LEASTSQUARES() 函数对指定列的数据进行最小二乘法线性拟合&#xff0c;返回拟合直线的斜率&#xff08;slope&#xff09;和截距&#xff08;intercept&#xff09;。该函数基于线性回…

Redis最佳实践——安全与稳定性保障之高可用架构详解

全面详解 Java 中 Redis 在电商应用的高可用架构设计一、高可用架构核心模型 1. 多层级高可用体系 #mermaid-svg-anJ3iQ0ymhr025Jn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-anJ3iQ0ymhr025Jn .error-icon{fil…

ABAP 屏幕在自定义容器写多行文本框

文章目录变量定义容器等逻辑屏幕效果变量定义 CONSTANTS: GC_TEXT_LINE_LENGTH TYPE I VALUE 72. TYPES: TEXT_TABLE_TYPE(GC_TEXT_LINE_LENGTH) TYPE C OCCURS 0. DATA: GV_SPLITTER TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. DATA: GV_CUSTOM_CONTAINER TYPE REF TO CL_…

昆山精密机械公司8个Solidworks共用一台服务器

在当今高度信息化的制造业环境中&#xff0c;昆山精密机械公司面临着如何高效利用SolidWorks这一核心设计工具的现实挑战。随着企业规模的扩大和设计团队的分散&#xff0c;传统的单机授权模式已无法满足协同设计需求。通过引入云飞云共享云桌面解决方案&#xff0c;该公司成功…