跳到主要內容
線上教學檔案 / C語言簡易基礎

 C語言程式輸入注意事項﹕

1.C 語言程式以windows的記事本或UNIXvi等純文字編輯器作成,這些文字編輯器中輸入的程式碼,一般稱為原始程式碼(source code),簡稱程式碼。

2.英文或阿拉伯數字請使用半型文字,不要使用全型。

3.英文有大寫小寫之分,請輸入時注意。

4.程式中有空白的地方,請按空白鍵或Tab鍵產生空白。

5.每一行程式的最後,或者要產生空白行時,請按Enter 鍵。

6.分號(;),冒號(:)使用時機不同。

7.{}[ ]()三者的使用時機亦不同。

8.輸入時請不要弄錯0()o(英文字母o)1(阿拉伯數字)l(英文字母L)

9.輸入完程式碼後存檔,請用副檔名 *.cpp    *.c

 

C語言程式碼轉換為機器語言的程序稱為編譯(Compile),此項作業必須使用一種名為編譯器(compiler)的軟體。執行編譯程式後,通常翻譯為機器語言的新檔案,會被儲存在原始程式碼所在位置的資料夾(目錄)內,而這個檔案便稱之為目的檔(object file)

1.      程式是用來指定、要求電腦從事特定的工作。

2.      C語言的程式碼,只要在一般的文字編輯器中輸入即可。

3.      將目的檔連結起來,便可產生出可以執行的程式。

 

 

 

              

        
  

 

 
  
 
 

 

 
  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

程式碼基本輸入﹕

 

1    #include

2    #include

3    int main(void)

4    {

 

5

 

 

 

 

6    return 0;       (要省略)

7     system(“pause”);      (有時省略)

8    }

 

 

1行帶有#者,會透過編繹器內建的前置處理器(prepro cesser),在編繹程式之前先被讀入。第一行表示用來執行輸出到螢幕功檔案[stdio.h]”,要在編碼前先行引入這個檔案作業就稱為include。這類要事先引入的讀案也稱標頭檔(header file)

2行與第一行同性質。

3main()函數是我們要讓電腦知道哪裡才是程式主體的起頭、應執行哪些部分。Main()後面由2個大括號{}所包含的部分,稱之為程式區塊(block)

5行中,C語言將每一個要執行的工作分為一行一行的小單元,每一行就是一個敘述句(statement ),並在每一行最後加上(;分號 ),當敘述句輸入完成時,則須在下一行輸入大括號為結尾,即宣告完成。執行敘述句時,原則上會  根據程式先後順序,從最前面的敘述句開始依序執行。

 

6main()主題之程式執行到這一行時,表示程式執行完畢,main()函數結束。

7 system(“pause”)包含在裡,表示執行程式後顯示在螢幕時暫停。

 

 

Printf(“ 想要顯示的字串     ”) ﹕輸出至螢幕上

\n      ﹕換行

 

 

 

 

文字與數值

轉換規格﹕

Printf可用來顯示字串,它還可以有下列功能﹕

字串如果出現%●的記號,這個部分在輸出時所顯示出來的會是逗號()之後的文字或數值,%●稱之為轉規格。●的部分會根據所要輸出的文字或數值而使用不同的符號。具代表的如下轉換規格﹕

   文字類……..%c

   整數類……..%d

   小數類……..%f

可以使用轉換規格,將文字或數值插入顯示在字串當中。

Printf(“%c為字元。\n”,’A’);

  螢幕輸出為 A為字元。

 

有些無法用鍵盤輸入之特殊文字,這些特殊文字的前面前必加上 \ ,與原來的字元組合後產生新生的意義。這樣的特殊文字通稱為跳脫字元。

 

表﹕跳脫字元

跳脫字元

說明

\a

警告聲

\b

Backspace

\t

水平tab

\v

垂直tab

\n

換行

\f

換頁

\r

return

\\

\

\’

\”

\?

?

0256

8進位000字元碼(00~7的數字)

0xhh

16進位hh字元碼(h0~9的數字與A~F的英文字母)

 

 

字元碼的種類很多,例如BIG-5Unicode(萬國碼),視使用環境而定。

字元由單一字母所構成,字串由2個或2個以上字母組合而成,字元由單引號而字串由雙引號將內容包圍起來。

 

 

 

重點整理

1.      main()函數是C語言程式的主題。

2.      程式敘述句(statement)是程式處理的最小單位名稱。

3.      程式區塊(block)是程式處理的較大單位名稱。

4.      程式當中寫在//符號後面的文字稱為註解內容,善用註解可以提高程式的可讀性。

5.      使用printf來輸出。

6.      C語言中有字元、字串、數值等。

7.      字元的外圍要用’   ’框住。

8.      某些特殊符號,需透過跳脫字元才能顯示。

9.      字串的外圍要用”   “框住。

10.  整數除了可以使用10進位表示外,還可以使用8進位制、16進位表示。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

變數﹕

電腦內部的記憶體記住特定資料的功能稱為變數(Variable)

變數可想成是各種資料型態(如數值、文字),每一種資料都被儲存在特定空格中。

識別字

使用變數前第一項準備工作,須針對該變數進行下列2項設定工作﹕

1.      指定變數的名稱

2.      指定變數的型態

第一點的意思說,為了使用變數,必須為該變數取一名字 。如取一變數名稱叫num,或叫其他文字的排列組合都可做為變數名稱。 只要是合法的字元或數字,最後組合成一個變數名稱即可。這種變數名稱被稱為識別字,如前述之 num

識別字的規則如下﹕

1.      使用英文字母、阿拉伯數字、底線連接(_)$等符號作為識別字名稱,無法包含特殊記號

2.      最長不超過31個字元。

3.      C語言已保留起來的關鍵字(Keyword)不能做為識別字名稱。常見如return

4.      識別字名稱不能用阿拉伯數字做為開頭。

5.      英文字大小寫有區別。

 

 

變數可用來存放特定文字或數值,這些值有許多種類,一般稱為資料型態(data type)

表﹕C語言的變數可以使用的基本型態

種類

名稱

檔案大小

資料的範圍

 

文字型

Char

1byte

1 個英文數字

 -128~127

Unsigned char

1byte

1個英文數字(無符號 )

0~255

 

整數型

Short

2 byte

整數

-32768~32767

int

4 byte

整數

long

4 byte

長整數

 

浮點變數

Float

4 byte

單精度浮點數

Double

8 byte

雙精度浮點數

Long double

8 byte

四倍精度浮點數

 

 

 

 

 

 

 

使用變數時首先 要宣告變數

語法﹕

 變數的資料型態    識別字;

 如下﹕

 Int num

 Char e

  Double db,dd

變數一經宣告後,就可以指定特定內容給變數,也就是讓變數真正記住指定內容。

 

變數的初始化﹕

 如下例

  Int num

  Num=3

上兩行可合併為

  Int num=3

寫程式時,請儘量參照這種模式。亦可在程式中段改變變數數值。

 

從鍵盤輸入變數值﹕

{

宣告變數;

scanf(“轉換規格”,&變數)

 

}

 

Scanf()printf()的資料型態非常相似,當輸入整數時要和printf()一樣; 使用%d這個轉換規格。

Scanf(“%d”,&num)

輸入小數﹕

Scanf(“”,&num)

 

輸入文字﹕

Ch=getchar()

Printf(“輸入的是%c\n”,ch)

 

1.計算體脂肪BMI值的公式是(w/H*H)H 是身高(公尺),W 是體重(公斤),請建立程式輸入身高和體重後,計算和顯示BMI值。

 

 

1.      變數就像一個盒子,可以容納特定的值。

2.      宣告變數的時候,必須清楚的指定變數的名稱及資料型態。

3.      將某個值指定給變數時,必須使用”=”

4.      宣告變數時可直接完成變數的初始工作,也就是直接把值指定給變數。

5.      指定新的值給變數時,變數舊的值會被新的值取代。

6.      從鍵盤輸入數值時使用scanf()等。

7.      從鍵盤輸入文字時使用getchar()等。

 

 

 

運算式﹕

  1+15

上述中115稱為運算元。

上述中”+”稱為運算子。

1+15稱為運算式。

運算元(operand)﹕計算執行的對象(通常是數字或文字)

運算子(operator)﹕負責演算的加減乘除等符號

運算子的種類﹕

 

運算子

說明

運算子

說明

+

加法運算子

>=

關係運算子

-

減法運算子

< 

關係運算子

*

乘法運算子

<=

關係運算子

/

除法運算子

==

相等運算子

%

餘數運算子

!=

不相等運算子

+

正號(單獨使用)

!

邏輯NOT運算子

-

負號(單獨使用)

&&

邏輯AND運算子

~

位元補數運算子

||

邏輯OR運算子

&

位元AND運算子

,

逗號運算子

|

位元OR運算子

()

呼叫函數

︿

位元XOR運算子

[]

陣列註標

=

指定

?:

條件運算子

<< 

位元左移運算子

sizeof

型別size運算子

>> 

位元右移運算子

++

前置遞增運算子

--

前置遞減運算子

 

 

> 

關係運算子

 

 

 

 

運算子(operator)與運算元(operand)相結合,形成所謂的運算式(expression)

使用遞增運算子和遞減運算子,可以讓變數的值加1或減1

使用複合運算子,可以一次完成四則運算和指霆算的工作。

數值在轉換成較小數值時,可能會流失一部分數值。

將數值或任何資料指定給變數時,必須注意資料型態是否需要轉換。

Cast運算子可以強制變更原本數值的資料型態。

 

 

條件敘述﹕

If 敘述

 

語法﹕

If (條件式){

  敘述句;

  }

 

在使用敘述句中,唯有當條件為true 時,才會執行被指定的敘述;如果條件式為false,就會跳過if內部的程式敘述,直接往下繼續執行。

 

If  ~ else 敘述﹕

 

If (條件式){

  程式敘述1

Else

   程式敘述2

  }

 

 

題目 一:鍵盤輸入兩數ab

       a>b則輸出1

       a則輸出0

 

題目 二:請寫一程式,讓使用者可以由鍵盤輸入整數值,執行時請輸出下列訊息。

 

輸入xx是偶數時……………………….輸出   “xx是偶數

輸入xx是奇數時……………………….輸出   “xx是奇數

輸入xx<0……………………….    輸出   “xx是負數

#include

main()

{

int a,b;

 scanf("%d",&a);

 b=a%2;

  if (a>0) {         

      if(b==0) {

     printf("%d是偶數\n",a); 

     }         

     else{   

          printf("%d是奇數\n",a) ;     

               }    

          }

   else {

        printf("%d是負數\n",a) ;   

        }     

     system("pause") ;

     return 0;     

      }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Switch 敘述

 

  Switch (運算式){

    Case 常數1 :

       程式敘1

        …….

     Break

Case 常數2 :

       程式敘2

        …….

     Break

Case 常數3 :

       程式敘3

        …….

     Break

default

       程式敘1

        …….

     Break

  }

 

Break 是中止switch程式的執行流程,沒break則程式執行將沒選擇而全部執行。

 

條件判斷方式有if switch外,還有邏輯運算子的判斷式,在互相配合運用下的組合,可以設定非常複雜的條件狀況。

 

 

題目; 使用switch解下列問題

當輸入1時,可顯示學校

當輸入2時,可顯示學校+班級

當輸入3時,可顯示學校+班級+姓名

當輸入4時,可顯示學校+班級+姓名+座號

當輸入5時,可顯示重新執行

 

 

 

 

For 敘述

 For (起始條件;判斷是否要重複執行的條件;遞增或遞減運算){

     程式敘述句1

      程式敘述句2

}

 

While 敘述(當條件式符合時,迴圈結束)

    While (條件式){

      程式敘述句;

     }

 

Do while 敘述(只要條件式為true時就繼續進行迴圈)

  Do {

   程式敘述句;

     ……

  }while (條件式)

 

Break 指令的主要用意是強制結束程式並跳出迴圈。

Continue指令是讓目前執行中的迴圈暫停執行,而回到迴圈的開始位置繼續下一個處理。

 

迴圈中若還有迴圈稱為巢狀迴圈。

 

題目

  試用雙迴圈寫出下列輸出之程式﹕

1.         * * * * * *

    * * * * * *

   * * * * * *

   * * * * * *

   * * * * * *

       * * * * * *

 

2.         1 2 3 4 5 6

       1 2 3 4 5 6

       1 2 3 4 5 6

       1 2 3 4 5 6

       1 2 3 4 5 6

       1 2 3 4 5 6

 

        6 6 6 6 6 6

        5 5 5 5 5 5

        4 4 4 4 4 4

        3 3 3 3 3 3

        2 2 2 2 2 2

        1 1 1 1 1 1

 

        6 5 4 3 2 1

        6 5 4 3 2 1

        6 5 4 3 2 1

        6 5 4 3 2 1

        6 5 4 3 2 1

        6 5 4 3 2 1

 

   1 1 1 1 1

       0 1 1 1 1

       0 0 1 1 1

       0 0 0 1 1

       0 0 0 0 1

      

 

 

 

 

 

1.         1 2 3 4 5 6

2 3 4 5 6

3 4 5 6

4 5 6

5 6

6

 

2.      由鍵盤輸入數值

(1).若輸入2 ,則輸出

     1  0

     0  1

 

(2). 若輸入3,則輸出

     1  0  0

     0  1  0

     0  0  1

 

 

 

 

i,j                                                               j>i

1,1

1,2

 

 

 

 

2,2

 

 

 

 

 

3,3

 

 

4,1

 

4,3

4,4

 

 

 

 

 

5,5

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

函數

C語言中,當寫到複雜的程式時,有時要重複執行某些必要的處理。這些重複的處理,有一種功能叫做函數(function)它可以將某些特定的處理整合起來寫成敘述。藉由建立函數,就可以很輕鬆地把整理好的處理呼叫出來。

C語言中要利用函數的時候,必須要包括以下2項步驟﹕

1.建立函數(定義函數)

2.利用函數(呼叫函數)

例﹕在已寫過程式裡,C語言的整體程式也可以算是一個函數。這個函數的名稱,就是main()函數

 

 

函數的定義與呼叫﹕

函數的定義﹕函數的定義是集中寫到程式區塊中,名下寫法

 

1      傳回值的型態    函數的名稱(引數列表)

2       {

3         敘述;

4          ………         (3,4列是將處理整合起來)

5         return 運算式

6        }

 

 

 

呼叫函數﹕如果定義好函數,就可利用已整合好的處理,利用函數稱之為

函數的呼叫(function call)

在利用函數時,需進行下列流程﹕

1.      呼叫函數

2.      執行函數內部的處理

3.      當函數區域內的處理結束後,處理則回到呼叫處。

 

函數功能﹕使用函數可以使複雜的程式寫更容易。

 

 

 

 

 

 

 

陣列

C語言陣列類型有如下特點﹕

1.      陣列中每一元素都是一個單獨的變數,具有變數的所有特性。

2.      陣列元素的個數在定義陣列時必須確定,不允許變動。

3.      陣列元素類型必須相同,它們在儲存中佔據連續的位走空間,如80個陣列元素,即包含80個同類型的數值或文字。

 

陣列元素可以是任一種數值類型,按陣列元素類型不同可分為數值陣列,字元陣列,指標陣列,Struct陣列等各種類型。

 

一維陣列

一維陣列通常是由一個陣列元素所組成的陣列,定義如下﹕

   儲存類型  數值類型  陣列名稱路[常數表達式]={初始值};

   static float score[80];

說明﹕

1.      儲存類型是任意選擇,用法與前面介紹過的變數儲存類型相同,說明其所佔的儲存區域和作用域。

2.      數值類型指明陣列中每個元素的類型,有int,char,float 等類型。

3.      陣列名稱符合識別字,但應注意不能與其他變數同名。例int a,[a]是錯的。

4.      常數表達式指明陣列中包含元素的個數,可以包含常數,符號常數,但不能包含變數,即不允許對動態陣列定義大小。

5.      初始值是任選,它為每個元素指派初始值。

 

C語言規定,不能參照整個陣列,只能參照元素,用陣列名加上方括號[  ]中該元素的位置號來參照該元素,一般形式是﹕

陣列名稱[索引][]

其中索引值表示該元素位置號,可以是整數常數,整數表元式,並且達式中可以包含數。應注意﹕

1.      索引值固定從0開始,即下限為0,上限為陣列長度減1

2.      C語言編譯系統不進行陣列邊界檢查,保證陣列元素參照不過界是編寫人員的職責。

 

 

 

 

 

 

 

一維陣列二素的儲存﹕

陣列元素佔連續的儲存空間,陣列名稱表示陣列儲存的首要位址,元素值就是儲存的內空。

一維陣列的初始化﹕

初始化是指在定義時指定初始值,編譯器把初始值指派給陣列變數。指派是指使用指派語法。

有下列幾種方式﹕

陣列全部元素指派初值。

對部分指派初值。

全部元素初始化可以為0

 

 

多維陣列﹕

C語言中允許使用多維陣列。索引值個數為兩個或兩個以上的陣列稱為多維陣列。

二維陣列的定義型式為﹕

儲存類型 數值類型 陣列名稱[常數表達式1][常數表達式2];

1.常數表達式可以包含常數與字元常數,但不能包含變數。

2.二維陣列可以看作是一種特殊的一維陣列,它的每個元素又是一個一維陣列。

 

 

#include

int main()

{

       

int a[12]={2,45,62,78,3,8,55,94,15,6,78,80},i,j,k;

for(k=0;k<12;k++){

  for(i=k;i<12;i++){

  if(a[i]>a[k]){

      j=a[i];

      a[i]=a[k];

      a[k]=j;

  }

   printf("M",a[i]);

       

 

}

        printf("\n");

}

  for(i=0;i<12;i++);

    printf("M",a[i]);

        printf("\n");

       

       

        return 0;  

       

       

       

       

       

       

       

       

}

消息公佈欄

時間類別標題發佈點閱

活動看板

時間類別標題發佈點閱

榮譽榜

時間類別標題發佈點閱
跳至網頁頂部