Download presentation
Presentation is loading. Please wait.
1
Introduction to the C Programming Language
2
基本資料型態 下表列出了C語言中各種基本資料型態所佔的記憶體空間及範圍 不同的編譯程式裡,整數類的變數所佔的位元組可能會有所不同 資料型態
型態說明 位元組 表示範圍 整數 類型 long int 長整數 4 ~ int short int 短整數 2 ~ 32767 char 字元 1 0 ~ 255(256個字元) 浮點數 float 1.2E-38 ~ 3.E38 double 倍精度浮點數 8 2.2E-308 ~ 1.8E308 不同的編譯程式裡,整數類的變數所佔的位元組可能會有所不同
3
整數資料型態 在Dev C++中,int 與 long int 都佔了4個位元組.
在其它編譯器裡(如:Turbo C), int 可能只佔了2個位元組. 在宣告長整數或短整數變數時,可以省略 int . short int a=1000; 可寫成 short a=1000; long int b=2000 ; 可寫成 long b=2000; 若儲存的資料絕對不會出現負數的時候,可以使用無號整數來儲存 變數與常數的不同: 當我們宣告一個變數時,編譯程式會在記憶體內配置一快空間給它。不管變數的值如何改變,它所佔的記憶體空間永遠都一樣。 常數與變數不同,它的值是固定的,如整數常數1200,浮點常數123.4等。 整數常數的特性: 沒有小數點,帶符號其常數數值範圍為-32768~+32767(不帶符號,則為0~65535) 長整數(long)常數,帶符號其數值範圍為 ~ C語言中,允許八進位整數的存在,只要是以零開頭的整數都被視為8進位數字。 C語言中,允許十六進位整數的存在,只要是以0x開頭的整數都被視為16進位數字。 資料型態 型態說明 位元組 表示範圍 unsigned long int 無號長整數 4 0 ~ unsigned int 無號整數 unsigned short int 無號短整數 2 0 ~ 65535
4
字元資料型態 字元型態在記憶體中佔有 1 個位元組,可用來儲存字元. 通常字元會被編碼,亦即替每一個字元編上一個整數碼,以方便處理這些字元.
ASCII是較為人知的編碼系統(請參閱附A). 在 ASCII 編碼系統中,數字 0 到 127 分別代表不同的常用符號。 例如:英文大寫 A 的 ASCII 碼是 英文小寫 a 的 ASCII 碼是 符號 % 的 ASCII 碼是37 C語言可接受科學記號表示法的浮點數。 例如:若有一數字是 ,我們可以寫成 e2 或 e3 附錄A
5
字元常數(Character Constants)
字元常數必須放在單引號裡面. 例如: ’A’ , ’a’ , ‘7’ , ‘*’ 也可以使用ASCII code來表示字元常數 範例: char ch=‘A’; 同等於 char ch=65; char ch=‘7’; 同等於 char ch=55; char ch=‘%’ 同等於 char ch=37; 在單引號之間的字元,我們都稱它是字元常數。例如:‘a’,’3’,’;’都是字元常數。 字元常數特性: 字元長度為1(不像字串長度為0~65535) C語言的字元型態與位元組整數是相容互通的 \xdd , 十六進位表示ASCII碼(每個d表示一數目),例如: \x42 B \ddd, 八進位表示ASCII碼(每個d表示一數目),例如: \101 A \0,代表null 41h:代表ASCII碼值十六進制(查表) chars are simply 1-byte integer. 例如: Upper = (lower - ‘a’) + ‘A’;
6
課堂練習(一) 請使用者輸入字元(A~Z、 a~z),程式輸出為對應的ASCII code來表示字元常數。 輸出printf 型態%c %d
提示:輸入 scanf 輸出printf 型態%c %d
7
字串常數(String Constants)
字串常數是以ㄧ對雙引號包圍. 例如: “holiday” , “Hello” , ”Jane Wang” …等 “a” 會被視為包含了一個字元的字串. 在C語言中處理字元和字串的方式是不ㄧ樣的. 在單引號之間的字元,我們都稱它是字元常數。例如:‘a’,’3’,’;’都是字元常數。 字元常數特性: 字元長度為1(不像字串長度為0~65535) C語言的字元型態與位元組整數是相容互通的 \xdd , 十六進位表示ASCII碼(每個d表示一數目),例如: \x42 B \ddd, 八進位表示ASCII碼(每個d表示一數目),例如: \101 A \0,代表null 41h:代表ASCII碼值十六進制(查表) chars are simply 1-byte integer. 例如: Upper = (lower - ‘a’) + ‘A’;
8
變數宣告(Declarations) 宣告的語法如下: 資料型態 變數名稱; 例如: 變數命名原則:
資料型態 變數名稱; 例如: int num1; /* 把變數num1宣告為 int 型態 */ char a; /* 把變數a宣告為 char 型態 */ float f; /* 把變數f宣告為 float 型態 */ 變數命名原則: 1. 第一個字元必須是英文字母或底線 2. 大小寫代表不同的變數(如 : SUM, Sum, sum). 3. 可由字母,底線,阿拉伯數字所組成. 4. 不可為關鍵字(Keyword)或保留字(Reserve word). Ex: 不合法的識別字: 2A , good! , $money, case 變數宣告: 範例: int apples,oranges,cherries;
9
變數宣告(Declarations) Memory 若想同時宣告一個以上相同型態的變數, 則可用逗號(,)隔開. 例如 : 可寫成
int a; int b; int c; 可寫成 int a, b, c; 在變數宣告完成後,可使用等號運算子(=)替變數設值。 例如: int a; /* 把變數a宣告為int型態 */ a Memory num a=3; 指定整數變數a的初值為3 C 語言 所有變數都要先行宣告,才能使用 若一個以上的變數擁有相同的型態,則可用逗號隔開 設定變數初始值 ex : int i =0; i 的始值為0 也可以在宣告的時候,替變數設值。 例如: int num=3; 指定整數變數num的初值為3
10
溢位 當數值的大小超過變數可以表示的範圍時,溢位(overflow)便會發生。 例如: shot int num=32767;
num=num+1; 解說: 設定num的初值為整數(integer)所容許的最大值(32767)。 當num的值加上1後,會發生溢位的現象。此時num的值 會變成-32768。
11
簡 單 的 C 程 式 範 例 #include<stdio.h> #include<stdlib.h>
void main(void) { int sum; /* 宣告整數變數sum */ int a=5,b=9; /* a的值為5 , b的值為9 */ float avg; /* 宣告浮點變數avg */ sum = a + b; avg = sum / 2; printf(“The average = %f\n” , avg); system("pause"); } 將a與b的值相加,放到sum中 將sum的值除以2,放到avg中
12
簡 單 的 C 程 式 範 例 #include <stdio.h> #include <stdlib.h>
int main(void) { int i; /* 宣告整數變數sum */ char ch; float j; double q; printf(“Input a integer a character and a floating a double point:”); /*printf函式,請使用者輸入整數、字元、浮點數 */ scanf("%d %c %f %lf",&i,&ch,&j,&q); /*使用scanf函式存入變數之中 */ printf("The integer you give us is %d\n",i); printf("The character you give us is %c\n",ch); printf("The floating point you give us is %f\n",j); printf("The double point you give us is %lf\n",q); system("pause"); }
13
簡 單 的 C 程 式 範 例 #include <stdio.h> #include <stdlib.h>
int main(void) { int chinese,english,math; float average; //宣告average為浮點數變數 printf("請輸入國文英文數學成績:"); scanf("%d %d %d",&chinese,&english,&math); //讀入各科成績 average = (float)(chinese+english+math)/3; //將分數加總後除以3 printf("平均分數為:%f\n",average); system("pause"); //使程式暫停在執行畫面讓我們看到結果 }
14
課堂練習(二) 請輸入兩個數值a、b,程式畫面輸出 (1)a+b (2)a-b (3)a*b (4)a/b (求至小數點第二位)
提示:scanf、printf、(float)、%5.2f
15
附錄A (Ascii碼)
16
附錄A (Ascii碼)
17
跳脫字元(Escape Sequences)
\a alert (bell) character \\ backslash \b backspace \? question mark \f formfeed \' single quote \n newline \" double quote \r carriage return \000 octal number \t horizontal tab \xhh hexadecimal number \0 null character 倒斜線(\),代表“脫離”字元(或稱首前導標識),使得在解譯字串時脫離正常的方式,而使下一個字元具特殊意義 \b:到退一格 \f:跳頁 \n:換行 \r:倒回同列的開始處 \t:跳8個字元
18
請寫一個程式使其輸入身高(整數)M、輸出結果為標準體重(實數)N,算到小數點以下一位。
【標準體重的公式是(身高-100) × 0.9。】
Similar presentations