乙個程式包括兩方面的資訊:
1.對資料的描寫。2.對操作的描寫。
演算法+資料結構=程式
演算法的特性:
1.有窮性
2.確定性
3.有零個或多個輸入
4.有乙個或多個輸入
5.有效性第二章 資料型別、運算子與表示式
1. c的資料型別
c的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。
2. 常量與變數
常量其值不可改變,符號常量名通常用大寫。變數其值可以改變,變數名只能由字母、數字和下劃線組成,且第乙個字元必須為字母或下劃線。否則為不合法的變數名。變數在編譯時為其分配相應儲存單元。
3. 整型資料
整型常量的表示方法:十進位制不用說了,八進位制以0開頭,如0123,十六進製制以0x開頭,如0x1e。
整型變數分為:基本型(int)、短整型(short int)、長整型(long int)和無符號型。不同機器上各類資料所佔記憶體位元組數不同,一般int型為2個位元組,long型為4個位元組。
4. 實型資料
實型常量表示形式:十進位制形式由數字和小數點組成(必須有小數點),如:0.12、.123、123.、0.0等。指數形式如123e3代表123×10的三次方。
實型變數分為單精度(float)和雙精度(double)兩類。在一般系統中float型佔4位元組,7位有效數字,double型佔8位元組,15~16位有效數字。
5. 字元型資料
字元變數用單引號括起來,如』a』,『b』等。還有一些是特殊的字元常量,如』\n』,』\t』等。分別代表換行和橫向跳格。
字元變數以char 來定義,乙個變數只能存放乙個字元常量。
字串常量是由雙引號括起來的字串行。這裡一定要注意』a』和"a"的不同,前者為字元常量,後者為字串常量,c規定:每個字串的結尾加乙個結束標誌』\0』,實際上"a"包含兩個字元:『a』和』\0』。
6. 數值型資料間的混合運算
整型、字元型、實型資料間可以混合運算,運算時不同型別資料要轉換成同一型別再運算,轉換規則:
char,short -> int -> unsigned -> long -> double <- float
7. 運算子和表示式
c運算子包括:
算數運算子( + - * / % )
關係運算子( > < == >= <= != )
邏輯運算子( ! && || )
位運算子( << >> ~ | ^ & )
賦值運算子( = )
條件運算子( ? : )
逗號運算子( , )
指標運算子( * & )
求位元組數( sizeof )
強制型別轉換(型別)
分量運算子( . -> )
下標運算子( [ ] )
其它運算子( 如函式呼叫運算子( ) )
自增自減運算子( ++ – )注意:++i和i++的不同之處,++i使用i之前先使i加1,i++使用i之後,使i加1。
逗號表示式的求解過程:先求解表示式1,再求解表示式2,整個表示式的值是表示式2的值。
程式的靈魂 演算法
資料結構只是靜態的描述了資料元素之間的關係。高效的程式需要在資料結構的基礎上設計和選擇演算法。高效的程式包括恰當的資料結構與合適的演算法。演算法是特定問題求解步驟的描述,在計算機中表現為指令的有限序列,演算法是獨立存在的一種解決問題的方法和思想。對於演算法而言,語言並不重要,重要的是思想。前面這句,...
程式的靈魂 演算法(二)
資料結構 演算法 程式 演算法的特性 有窮性 包含有限的操作步驟 確定性 演算法中的每乙個步驟都應當是確定的 有零個或多個輸入 輸入是指在執行演算法時需要從外界取得必要的資訊 有乙個或多個輸出 演算法的目的是為了求解,解 就是輸出 有效性 演算法中的每乙個步驟都應當能有效地執行,並得到確定的結果。良...
程式的靈魂 演算法(二)
4 快速排序演算法 1 演算法描述 從待排序序列中任意挑選乙個元素,作為基準 將所有小於基準的元素放在基準之前,大於基準的元素放在基準之後,等於基準的元素放在基準之前或之後,這個過程稱為分組 以遞迴的方式,分別對基準之前和基準之後的分組繼續進行分組,知道每個分組內的元素個數不多於 1 個為止 2 演...