C語言基礎

 

一、何謂C,何謂C++
 

二、下載C++

常見程式演算法

 

三、為何學C語言?

 

四、C語言入門

 

 

§ 程式基本架構:國際標準程式「Hello, World!」 

我們試著寫一個每一種程式語言教科書的第一個範例程式:印出「Hello, World!」。

#include <stdio.h>

int main()

{

 printf("Hello, World!");

 return 0;

}

首先 printf() 這個函數的功能是把結果印在螢幕上,括號裡面的文字就是要印出來的內容(前後要用 " 夾起來)。而要使用 printf() 這個函數,必須加入它的宣告,而它的宣告是定義在 stdio.h 這個檔案中,所以我們在第一行加上 #include 把它加進來,stdio 是 Standard I/O 也就是標準輸入輸出的意思,它裡面有很多函數的宣告,這個我們日後再講。另外,井字號開頭的指令,例如 #include、#define 等必須單獨成為一行。

 

§ 主程式

void main( )

{

程式內容;

}

程式之執行是由主程式首行開始執行,至最後一行執行完畢為止。

程式內容主要包含有:
1.      變數(Variable)與函式(Function)之宣告。
2.      程式命令、函式呼叫。

程式內容的每一段程式命令,均必須要以  做結尾。

§ 標題檔(Header File)-函式庫之引用

#include <stdio.h>            //標準輸出輸入檔之引用

#include "myfile.h"                //自訂標題檔之引用

欲使用標準的或自訂的函式庫中的函式,需於主程式前將包含欲使用函式的標題檔,使用前處理 #include 指令引用進來。

例:iostream.h  fstream.h  stdio.h  math.h  stdlib.h  string.h  time.h

§ 註解(Comments)

1. 單行註解:   //  註解

2. 多行註解:   /*  註解一

                               註解二   */

§基本程式

當你撰寫出一個程式後(如左),需經過一連串的編譯(Compile)動作後,經由Dev-C++程式將妳撰寫的程式編譯轉碼成為一個執行檔(.EXE),如此一來,電腦才能夠執行此程式。

 

§程式編譯過程

Dev-C++主要工作:「預先處理」(Preprocess)、「編譯」(Compile)和「組譯」(Assemble)。

預先處理即是做一些在編譯前要做的工作,之後就進行編譯。在編譯過程中,編譯器會檢查程式有沒有錯誤,而錯誤主要有兩類:「語法錯誤」(SyntaxError)和「語義錯誤」(SemanticError)。

語法錯誤就好像一個句子漏了名詞和動詞等,例如打漏了等如符號,括號數目不平衡等,那麼編譯器就不懂得「看」你的程式。而語義錯誤就好像串錯了字,例如你用了未經宣告的變數,就算編譯器懂得看,也不懂得編譯你的程式。

如果有上述錯誤,編譯器會通知你,而且停止編譯過程,這時你要修正程式內的錯誤,修改後重新開始編譯器的工作。當沒有任何錯誤後,編譯器會把程式內每個句子轉成更低階的方式,一般來說是指「組合語言」(Assembly)方式。

轉成組合語言後,組譯過程就會把每個組合語言句子轉成「機械語言」(MachineCode)方式(通常編譯器都內置了組譯器),這種方式稱為「目的碼」(ObjectCode),產生另一個檔案"file.obj"。

最後到了「連結」(Link)過程,就會把你的程式、有關的程式和程式庫所產生出來的*.obj,轉成可以在電腦上執行的方式,產生另一個檔"file.exe",這個檔案就可以執行了。

 

 

§程式執行結果

程式說明:

程式之執行是由主程式〔main()〕首行開始執行,至最後一行執行完畢為止。

在「Hello, World!」程式中,main()中只有一行程式〔printf("Hello, World!");〕此行程式的作用已經顯示在右邊執行結果中了。此函數的功用是將Hello, World!在螢幕上顯示(印)出來。也就是說,可以讓使用者看到程式的執行結果。

實驗:
你可以將此行程式〔printf("Hello, World!");〕去掉,並看看執行結果

 

範例:九九乘法表
#include <stdlib.h> 

int main() 

for(int i=1;i<=9;i++) 

for(int j=1;j<=9;j++) 

printf("%dX%d=%d\t",i,j,i*j); 

printf("\n"); 

system("PAUSE"); 
return 0; 
}

 

範例:求最小公倍數

Input m & n:6 24
The LCW of 24 and 6 is: 24
#include<stdio.h>
int main()
{
int m, n, temp, i;
printf("Input m & n:");
scanf("%d%d", &m, &n);
if(m<n) /*比較大小,m存大數,n存小數*/
{
temp = m;
m = n;
n = temp;
}
for(i=m; i>0; i++) /*從大數開始尋找滿足條件的自然數*/
if(i%m==0 && i%n==0)
{/*輸出滿足條件的自然數並結束循環*/
printf("The LCW of %d and %d is: %d\n", m, n, i);
break;
}

return 0;
}

範例:分解質因數

輸入一個整數:10000
10000=2*2*2*2*5*5*5*5
#include <stdio.h>
int main(){
int n; // 輸入整數
int i; // 循環計數
printf("輸入一個整數:");
scanf("%d",&n);
printf("%d=",n);
// n>=2才執行下面的循環
for(i=2; i<=n; i++){
while(n!=i){
if(n%i==0){
printf("%d*",i);
n=n/i;
}else
break;
}
}
printf("%d\n",n);
return 0;
}

 

 

下一節 變數的使用