C Note(NO.2)

程序=算法+數據結構+程序設計方法+語言工具和環境

爲解決一個問題而採取的方法和步驟,就稱爲算法;

 計算機算法:計算機能夠執行的算法。
 計算機算法可分爲兩大類:
       數值運算算法:求解數值;
       非數值運算算法:事務管理領域。


算法的特性
 有窮性:一個算法應包含有限的操作步驟而不能是無限的。
 確定性:算法中每一個步驟應當是確定的,而不能應當是含糊的、模棱兩可的。
 有零個或多個輸入。
 有一個或多個輸出。
 有效性:算法中每一個步驟應當能有效地執行,並得到確定的結果。

 

結構化程序設計方法
 自頂向下;
 逐步細化;

 高內聚;

 低耦合;
 模塊化設計;
 結構化編碼

數據類型可分爲:基本數據類型,構造數據類型,指針類型,空類型四大類。

1. 基本數據類型:基本數據類型最主要的特點是,其值不可以再分解爲其它類型。

也就是說,基本數據類型是自我說明的。
2. 構造數據類型:構造數據類型是根據已定義的一個或多個數據類型用構造的方法

來定義的。也就是說,一個構造類型的值可以分解成若干個“成員”或“元素”。每個“成

員”都是一個基本數據類型或又是一
個構造類型。在 C 語言中,構造類型有以下幾種:
·數組類型
·結構體類型
·共用體(聯合)類型
3. 指針類型:指針是一種特殊的,同時又是具有重要作用的數據類型。其值用來

表示某個變量在內存儲器中的地址。雖然指針變量的取值類似於整型量,但這是

兩個類型完全不同的量,因此不能混爲一談。
4. 空類型:在調用函數值時,通常應向調用者返回一個函數值。這個返回的函數

值是具有一定的數據類型的,應在函數定義及函數說明中給以說明,例如在例題

中給出的 max 函數定義中,函數頭爲: int max(int a,int b);其中“ int ”類型說明符

即表示該函數的返回值爲整型量。又如在例題中,使用了庫函數 sin,由於系統

規定其函數返回值爲雙精度浮點型,因此在賦值語句 s=sin (x);中, s 也必須是

雙精度浮點型,以便與 sin 函數的返回值一致。所以在說明部分,把 s 說明爲

雙精度浮點型。但是,也有一類函數,調用後並不需要向調用者返回函數值,

這種函數可以定義爲“空類型”。其類型說明符爲 void。


 

常量:

在程序執行過程中,其值不發生改變的量稱爲常量。
 直接常量(字面常量):
 整型常量: 12、 0、 -3;
 實型常量: 4.6、 -1.23;
 字符常量:‘a’、‘b’。
 標識符:用來標識變量名、符號常量名、函數名、數組名、類型名、文件名的有效字符序列。
 符號常量:用標示符代表一個常量。在C語言中,可以用一個標識符來表示一個常量,稱之爲符號常量。
符號常量在使用之前必須先定義,其一般形式爲:
#define 標識符 常量
其中#define 也是一條預處理命令(預處理命令都以"#"開頭),稱爲宏定義命令,其功能是把該標識符定義爲其後的常量值。一經定義,以後在程序中所有出現該標識符的地方均代之以該常量值。
 習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區別。

 用標識符代表一個常量,稱爲符號常量。
 符號常量與變量不同,它的值在其作用域內不能改變,也不能再被賦值。
 使用符號常量的好處是:
 含義清楚;
 能做到“一改全改”。

變量:

其值可以改變的量稱爲變量。一個變量應該有一個名字,在內存中佔據一定的存儲單元。變量定義必須放在變量使用之前。一般放在函數體的開頭部分。


 

字符常量是用單引號括起來的一個字符。
例如:
'a'、 'b'、 '='、 '+'、 '?'
都是合法字符常量。
在C語言中,字符常量有以下特點:
1) 字符常量只能用單引號括起來,不能用雙引號或其它括號。
2) 字符常量只能是單個字符,不能是字符串。
3) 字符可以是字符集中任意字符。 但數字被定義爲字符型之後就不能參與數值運算。

 

字符串常量是由一對雙引號括起的字符序列。例如: "CHINA" , “C program” , "$12.5" 等都是合法
的字符串常量。
字符串常量和字符常量是不同的量。它們之間主要有以下區別:
1) 字符常量由單引號括起來,字符串常量由雙引號括起來。
2) 字符常量只能是單個字符,字符串常量則可以含一個或多個字符。
3) 可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。在C語言中
沒有相應的字符串變量。
4) 字符常量佔一個字節的內存空間。字符串常量佔的內存字節數等於字符串中字節數加 1。增加的一
個字節中存放字符"\0" (ASCII 碼爲 0)。這是字符串結束的標誌。

 

自動轉換遵循以下規則:
1) 若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。
2) 轉換按數據長度增加的方向進行,以保證精度不降低。如 int 型和 long 型運算時,先把 int 量轉成 long
型後再進行運算。
3) 所有的浮點運算都是以雙精度進行的,即使僅含 float 單精度量運算的表達式,也要先轉換成 double
型,再作運算。
4) char 型和 short 型參與運算時,必須先轉換成 int 型。

5) 在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換爲左邊量的類型。

使用強制轉換時應注意以下問題:
(6)類型說明符和表達式都必須加括號(單個變量可以不加括號)
(7) 無論是強制轉換或是自動轉換,都只是爲了本次運算的需要而對變量的數據長度進行的臨時性轉換,
而不改變數據說明時對該變量定義的類型。
 



 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章