Ch1 輸出

搭配 Zero Judge 高中生程式解題系統

上一章:新手村任務
下一章:變數與輸入
回目錄:國立科學園區實驗中學C++程式語言自學講義

什麼是輸出

在上一章,我們成功執行了空程式。
空程式名副其實,什麼功能也沒有,就是一個空空的小黑窗。
在這一章,我們要讓小黑窗印出訊息。

印出一句話(一行文字)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

想像一隻開口向右的小精靈,對你說Hello!

cout << "Hello";

以上這行程式,就是讓小黑窗印出「Hello」的功能
你可以改成任何你想印出的資訊,例如

cout << "Bang!";

無論如何,只要想印出資訊,一定先打一個cout,然後兩個小於符號(<<),接著是想印出的訊息,並在前後用雙引號(")包住。

這個用雙引號包住的訊息,我們稱做字串

【學生練習題】

換行 (印出多行文字)

如果想要在文字間換行

(這是錯誤的程式喔!) cout << "This is a line That is another line" ;

直接在程式裡面幫句子換行的話,按下執行是會跳出錯誤的!
那麼究竟要怎麼讓電腦印出「換行」的文字呢?

在C++語言裡,換行符號是endl
把要輸出的文字依照想換行的地方拆開
每次只輸出一句,輸出之後都接上換行符號endl

cout << "This is a line" << endl; cout << "That is another line" << endl;

如此一來,就可以印出兩行文字了
如果想印三行也是可以的,就算是100行也可以喔

cout << "I have a pen" << endl; cout << "I have an apple" << endl; cout << "Ah, apple pen" << endl;

Q:為什麼endl不能直接接在字串後面呢?
像是"I have a pen endl"或是"I have a pen"endl ?

因為endl本身不是字串,是程式語言裡的特殊代碼
在C++輸出的規則裡,如果想連續輸出不同類型的東西(例如字串和endl),就要用<<這個符號來把訊息「串起來」

如果只想用一次cout就輸出完好幾行,該怎麼做呢?
有兩種方法
第一種方法,其實endl這個符號不一定要放在每句程式的末端,只要再用<<把它和下一句話串起來就能達成一樣的換行效果,例如

cout << "I have a pen" << endl << "I have an apple" << endl << "Ah, apple pen" << endl;

第二種方法,有一個符號\n代表的就是換行的「字串」,它和endl不一樣,它真的是字串,可以直接放在字串裡面喔,例如

cout << "I have a pen\nI have an apple\nAh, apple pen\n";

只要把\n這個符號放在任何想換行的地方,就可以印出換行的效果了

你可能會覺得寫完之後看了覺得這種寫法好亂
沒錯我也這麼覺得
所以我習慣上還是會每一行分開寫(一行一個cout配一個endl)
不過還是以你自己喜歡為主!

印出運算結果

試著運行看看這行程式

cout << 1+2+3 ;

小黑窗會直接印出6呢!
這就是程式的運算功能,不管是加減乘除還是更複雜的運算都做得到
記得1+2+3不是字串,不需要放在雙引號內,直接寫就好囉!
也可以試試更複雜的

cout << (8+10)*6/4-3 ;

一切的運算規則就和數學的規則一樣,括號優先,然後先乘除,後加減

如果想要將兩個運算結果用空白隔開,可以這樣做

cout << 1+2+3 << " " << 4+5+6 ;

還記得上一段所說,只要想把不同的訊息接連著印出來,就可以用<<來把訊息串成一串
當然,中間的字串可以改成任何想要的字串

就算不放任何字串也是可以的

cout << 1+2+3 << 4+5+6 ;

這樣小黑窗印出的就會是615,6和15黏在一起了

未來我們在green judge上做的題目,大多都會是要用空格隔開答案的
如果忘記該怎麼做,可以再回來這篇看喔!

上一章:新手村任務
下一章:變數與輸入
回目錄:國立科學園區實驗中學C++程式語言自學講義