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
英文地址,請注明出處:http://en.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;該公司成功…