C語言簡介:基本輸入輸出
本教學面向新手,故教學內容多為基礎知識,倘若您希望學習進階內容,本文並不符合您的需求。
Hello World!
首先,筆者先來帶各位寫第一支C程式!
1 |
|
恭喜!你已經成功完成自己的第一支C程式了!
接下來來說明一下這些程式碼到底是怎麼一回事:
#include <stdio.h>
1 |
這裡是要引入一個名叫 stdio.h 的標頭檔。
而stdio.h裡面有許多C語言常用的函數,例如
scanf():輸入printf():輸出getchar():讀一個字元
…等等。
int main()
2 | int main() |
這裡,是我們的主程式,整個程式的起點。
printf("Hello World!\n")
3 | printf("Hello World!\n"); |
如同前面所說的, printf() 是用來輸出的函數,所以 printf("Hello World!\n") 就是用來在螢幕上印出 Hello World!(換行)。
有沒有注意到甚麼?當我們寫 printf("Hello World!"); 時,輸出的居然不是 Hello World!\n 而是 Hello World!,其中的 \n 沒有被印出來,這是因為 \n 是跳脫字元,常見的跳脫字元有 \n(換行)、\t(Tab)、\\(印出 \)等等。
return 0
4 | return 0; |
程式最後,我們需要return一個exit code,而這裡我們寫 return 0; 通常代表程式正常結束,作業系統可用這個回傳值判斷執行結果。
試試看
如果今天希望印出 Hello C! 在螢幕上應該怎麼寫呢?
變數
變數是一種用來裝資料的「小箱子」,我們可以透過以下程式儲存變數
int x = 3; |
這段程式中我們宣告了一個 int 型態的變數 x,而 x 的值是 3。
注意到,假如之後我們要對 x 的值進行更動,例如將 x 的值改為 20,那麼只需要寫下以下程式碼
x = 20; |
也就是,不需要再寫下 int,這只有當該變數第一次出現、宣告時會使用。
所以,int是甚麼
int 是一種資料型別,代表整數(integer),不同資料型別有不同代碼,例如字元是 char。
試試看
現在,請宣告一個變數 x,讓他的值為 1。
那我可以宣告變數後不賦值嗎?
先說答案:可以。
但是,實務上通常建議宣告後初始化,避免「垃圾值」可能帶來的困擾。
試試看
現在,請試宣告一個變數 a,令其值為 1,並宣告一個變數 b,不賦值,然後輸出這兩個變數,觀察哪裡不同。
註: 這只是為了觀察亂碼,實際寫程式時不要這樣做!
變數的種類
| 變數 | 意義 |
|---|---|
int |
整數 |
long |
長整數 |
long long |
長整數 |
float |
浮點數 |
double |
雙精度浮點數 |
char |
字元 |
還有其他種類,在此不一一贅述,詳請見此說明。
輸入
如果今天變數的值不是由我們直接在程式碼設定,而是由使用者自行輸入呢?
輸入是讓使用者跟程式互動的入口。
如果今天要輸入,請使用 scanf(),格式為 scanf("格式字串", &變數)。
註: scanf() 在特定情況下變數不用加 &,但不屬於今日本文討論範圍,歡迎有興趣的讀者自行搜尋。
所以,如果今天我要輸入一個整數 a,可以使用
scanf("%d", &a); |
注意到格式字串我並不是寫 int,而是 %d !
聰明的你應該可以猜到 %d 是告訴程式說「欸我要輸入的是整數喔!」
說得精確一點,是十進位整數。
你說「好吧,那如果我今天想輸入的是浮點數或字元怎麼辦?」
以下整理一個簡單的小表格提供讀者參考:
| 型態 | 格式字串 |
|---|---|
| 十進位整數 | %d |
| 浮點數 | %f |
| 雙精度浮點數 | %lf |
| 字元 | %c |
※
scanf()讀取double必須用%lf,但printf()輸出double在 C99 標準前是用%f(現在%lf也可以,但習慣上仍多用%f)
輸出
如果我們要把資訊印在螢幕上怎麼辦呢?
C語言的輸出函數是 printf(),
如果要輸出一段話,例如 hello, world!,就可以寫
printf("hello, world!"); |
如果我今天已經有以下程式
1 |
|
而我希望印出a的值呢?
此時我們可以這樣寫
1 |
|
注意到了嗎?在 printf() 裡面,我並沒有在 a 前面加上 &。
試試看
- 請試輸入一整數
a,並印出其值。 - 請試輸入一整數
b,並印出b+3的值。
結語
以上就是C語言基本輸入輸出簡介。
倘內容有誤或仍有疑問,歡迎在下方留言區留言!