# Input/Output# String

a001 - 哈囉

🔗 前往 ZeroJudge 原題

題目描述

本題要求程式讀取一個單詞作為輸入,然後輸出固定的前綴 "hello, " 與該單詞串接後的結果,並在末尾換行。例如,若輸入為 "world",則預期的輸出是 "hello, world"。

解題思路

這是一個典型的程式設計入門題目,主要目的是讓學習者熟悉基本的標準輸入 (stdin) 和標準輸出 (stdout) 操作。 解題步驟如下:

  1. 引入必要的函式庫: 為了使用輸入輸出功能,需要包含 <iostream> 函式庫,以及為了處理字串,可能還會用到 <string> 函式庫(雖然 iostream 通常會自動包含 string 的一部分功能,但明確引入是好習慣)。
  2. 定義字串變數: 宣告一個 std::string 型別的變數,用於儲存從輸入讀取的單詞。
  3. 讀取輸入: 使用 std::cin >> variable_name 的方式,從標準輸入讀取一個字串(直到遇到空白字元或換行符)。由於題目說明輸入「總共一行,內含一組文字」,這表示輸入通常是一個沒有空格的單詞,因此 cin >> s 是適用的。程式碼中的 while(cin >> s) 是一個常見的模式,用於處理可能有多個輸入的情況,但在本題的描述下,它只會執行一次。
  4. 輸出結果: 使用 std::cout << "hello, " << variable_name << std::endl; 將固定的字串 "hello, "、讀入的字串以及換行符號 std::endl 依序輸出到標準輸出。std::endl 會在輸出換行後,強制刷新輸出緩衝區。

複雜度分析

  • 時間複雜度: O(L),其中 L 是輸入字串的長度。主要時間花費在讀取輸入字串和將字串輸出到螢幕上。
  • 空間複雜度: O(L),其中 L 是輸入字串的長度。程式需要一個字串變數來儲存輸入的內容。

程式碼

#include <iostream>
using namespace std;
int main() {
    string s;
    while(cin >> s) cout << "hello, " << s << endl;
    return 0;
}

Discussion