目標:
筆者的小講堂:
在學完了資料型態,終於要開始進入動手的環結。其實,程式基本上是透過動手,逐漸晚整掌握的。在這個章節會介紹printf和scanf的使用,並切會在過程中介紹一個基本C程式的語法結構。先聲明一下的是,C是由上到下(依程式)、一個一個模組執行的,因此務必要先行好宣告、確認好執行流程(後面會在講,在此有概念就行)。
零、C程式的基本架構
在此先大致講解C程式的基本結構,除了滿足好奇心,同時也可以方便接下來的講解。結構如下:
插入程式碼:
//宣告好標頭檔 #include<函數庫名稱> //宣告程式進入點,通常是int main()。一般寫的主程式即在int main()的一對大括號中。 int main(void){ printf("Hellow, World");//程式區塊,務必記得後面要加分號(;),以便告知編譯器如何斷句。 return 0;//回傳0,告訴電腦程式以順利完成。函式會用到。 }//記得要用大括號把程式包起來喔。
由於C是由上到開始讀取程式,因此要做什麼都要先宣告好,以防記憶體分配出錯。C是一種模塊化處理的程式語言,所以要用一對大括號包住程式區塊,而一對大括號就是一個模組。
還有一點要注意的是,C有分大小寫與全形半形的!因為大小寫與全形半形背後的ASCII碼完全不同,所以要注意。
以上通常是debug熱區。
眼尖的讀者應該發現到雙斜線,其是那是"註解"。註解就是告訴別人我的這段程式在做什麼,因為不同人的想法不同,又如果要協做,註解就派上用場了。單行註解用雙斜線//,而多行註解用/**/,即/* 欲註解區塊 */。有意思的是,被註解的內容是不會被處理的,因此若要debug,可以用註解,忽略部分原始碼。
一、標頭檔
在C中,是由多個函數構成的模組化程式。因此,要調用函數(如輸入/輸出)需要先宣告好標頭檔(即為函數庫)。它就好比工具箱,不同的工具放在不同的工具箱,你要告訴電腦要去哪一個工具箱拿你要的工具。
當然,你可以自己做一套函數庫(在此就不多做說明),或是不同的編譯器也許有自己的函數庫。那麼,問題來了,不同的編譯器也許有自己的獨特函數庫,豈不就會充斥多個規格?放心,目前國際上有強制規定C中必要有的函數庫及功能,而IDE開發商只能夠在其基礎上加入獨家功能。
語法:#include<標頭檔名稱.h>,e.g. #include<stdio.h>
常見的標頭檔有:
- stdio.h:標準輸入/輸出函數庫。可以處理輸入與輸出。
- stdlib.h:標準函數庫。可以處理數值、字串轉換等。
小百科:電腦中的一切都是由0、1組成,而字串也不例外。字串是依ASCII碼處理的,而背後就是數字(二進位、八進位、十六進位等)
- math.h:數學函數庫。顧名思義是可以處理數學公式(如三角函數)
- 小百科:數學函數庫中的三角函數是用弧度量喔。
- time.h:時間函數庫。可以處理時間和取亂數。
小百科:假設要取亂數,可以用時間函數庫取,雖然電腦無法做到真正的取亂數,但加上時間可以增加複雜度,進而提升取亂數的效果。
- string.h:字串處理函數。可以處理字串。
小百科:C沒法直接處理字串,要透過特殊方式處理字串,通常是陣列,之後會提到。
二、程式進入點
通常是int main(void)而void可加可不加(有的編譯器要加,有的會有不同的意義,因此依個人狀況應對),目的是要告訴編譯器要從哪裡開始編譯,是電腦從指定地方執行。
三、輸出
終於要來講輸出了。那為何要講輸出?一是簡單,而是講輸入前還有內容要說,故先講輸出。且講完輸出還要帶入一些觀念到輸出裡。在此先講基本輸出。
語法:輸出內容(不包含特殊符號,否則要用轉義序列)
printf("欲輸出內容");
e.g.請輸出 OK 兩字,則:printf("OK");
這裡要講一個關於輸出的其他小技巧,就是轉義系列(或是跳脫序列)。作用在於對電腦進行特殊的控制,類型如下:
- \0:字串結束字元
- \a:警告字元,電腦嗶一聲
- \n:換行
- \b:水平後退一格
- \t:水平前進一格
- \':顯示單引號
- \":顯示雙引號
- \\:顯示反斜線
- \f:換頁
還有其他轉義序列,這裡僅介紹常見、常用的。
四、基本範例
在此,筆者希望讀者看完上面的說明,而且礙於篇幅,望讀者能再看一下範例,並且一一說明清楚這些原始碼的意義、大膽推測執行結果,並且實際動手喔。
範例一:請輸出Hellow, World 。
#include<stdio.h> int main(void){ printf("Hello,World"); return 0; }
#include<stdio.h>
int main(void){
printf("\" \' \\");
return 0;
}
#include<stdio.h>
int main(void){
printf("\%%");
return 0;
}
#include<stdio.h>
int main(void){
printf("高木想知道西片愛看的100\%%單戀");
return 0;
}
沒有留言:
張貼留言