Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a001. 哈囉

題目連結

https://zerojudge.tw/ShowProblem?problemid=a001

解題思路

先使用scanf()函式讀取輸入的字串,再使用printf()函式輸出相對應的字串。

注意事項

大家或許已經注意到了,有時scanf()函式的變數名稱後面會加上&,有時卻不會,這其實與變數的型態有關。變數依據宣告的位置,可分為全域變數與區域變數。全域變數是宣告在主程式,或甚至主程式之外的變數,可以在所有地方存取或修改值;區域變數是在特定程式區塊,如迴圈或函式等內部宣告的變數,只能在其宣告的程式區塊以內使用。若是其他程式區塊也需使用此變數,必須在變數名稱前加&,表示取得這個變數的位址,進而使用此變數。

以scanf()函式來說,因為其所使用的變數並未在在函式內宣告,屬於區域變數,因此使用時通常須在變數名稱前加&,也就是指定變數的位址作為儲存空間來存放輸入。但在所有資料型態中,字串是特例,因為字串在C語言裡就是以空字元\0結尾的字元陣列,而陣列名稱具有「指標」性質,也就是說其名稱會指向存放變數的記憶體位置,因此前面不需要加&。當然有關指標的部分算是進階內容了,有興趣的人可以自行上網搜尋相關內容,初學者只需要記得讀取字串時不須加上&,當作一種固定的寫法即可。至於其他資料型態的符號可以參考下表:

程式碼:C語言

1
2
3
4
5
6
7
#include <stdio.h>
int main() {
char arr[100];
scanf("%s", arr);
printf("hello, %s\n", arr);
return 0;
}