Semorphe

讀進來

讓程式問使用者要資料,而不是自己寫死。 · ⏱ 約 20 分鐘

你會學到三件事

  1. 怎麼讓程式等使用者打字cin
  2. 為什麼 cin 的箭頭方向cout 相反
  3. 一個變數可以先取名字、之後才裝東西

開始之前

上一課的程式是這樣:

int age = 16;

16 還是寫死的。你想換一個數字,還是得回去改程式。

這一課要讓使用者決定那個數字。

一、先留一個空位

到目前為止,取名字和裝東西都寫在同一行。其實可以分開:

int n;

這一行的意思是「我要一個叫 n 的位子,裝整數,但現在還沒東西」。

⚠️ 這時候 n 裡面裝的是垃圾——不是 0,是上一個用過這塊記憶體的人 留下來的東西。所以留了空位就要記得填,別急著印它。

二、把使用者打的東西讀進來

int main() {
    int n;
    cin >> n;
    cout << "你打的是 " << n << endl;
    return 0;
}

cin >> n; ——console input,讀進來。

注意箭頭的方向:

cout << n     資料從 n 【流出去】給螢幕
cin  >> n     資料從鍵盤 【流進來】裝進 n

箭頭永遠指著資料要去的地方。 記這一件事就好,不用分別背兩個。

三、跑跑看

按「執行」,程式會停住,主控台出現一個等你打字的地方。

7,按 Enter:

你打的是 7

再跑一次,打別的數字——程式一個字都沒改,結果不一樣了。

這就是輸入的意義:程式描述的是「怎麼做」,資料是使用者給的。

⚠️ 另外注意 "你打的是 " 最後有一個空格。 沒有那個空格,印出來會是 你打的是7,擠在一起。 引號裡面的空格是算數的。

完成的樣子

int main() {
    int n;
    cin >> n;
    cout << "你打的是 " << n << endl;
    return 0;
}

換你了

讀進兩個數字,然後把它們都印出來:

第一個是 3
第二個是 8

提示:cin >> a >> b; 可以一次讀兩個(中間用空白或 Enter 分開), 你也可以老老實實寫兩行 cin。兩種都對。

這一課你做了什麼

如果卡住了

你看到 多半是因為
程式沒停就跑完了 cin 那行漏了,或箭頭寫成 <<
印出一個很怪的大數字 忘了 cin,印的是還沒填過的垃圾值
打了字沒反應 要按 Enter,程式才知道你打完了
文字和數字擠在一起 引號裡面少一個空格
在編輯器打開這一課 →