在實際編程中,有些數據的取值往往是有限的,只能是非常少量的整數,並且最好為每個值都取一個名字,以方便在後續代碼中使用,比如一個星期只有七天,一年只有十二個月,一
通過前面的講解,我們知道結構體(Struct)是一種構造類型或復雜類型,它可以包含多個類型不同的成員。在C語言中,還有另外一種和結構體非常類似的語法,叫做共用體
有些數據在存儲時並不需要占用一個完整的字節,只需要占用一個或幾個二進制位即可。例如開關只有通電和斷電兩種狀態,用 0 和 1 表示足以,也就是用一個二進位。正是
所謂位運算,就是對一個比特(Bit)位進行操作。在《二進制思想以及數據的存儲》一節中講到,比特(Bit)是一個電子元器件,8個比特構成一個字節(Byte),它已
C語言允許為一個數據類型起一個新的別名,就像給人起“綽號”一樣。起別名的目的不是為了提高程序運行效率,而是為了編碼方便。例如有一個結構體
有時候我們希望定義這樣一種變量,它的值不能被改變,在整個作用域中都保持固定。例如,用一個變量來表示班級的最大人數,或者表示緩沖區的大小。為了滿足這一要求,可以使
我們對文件的概念已經非常熟悉了,比如常見的 Word 文檔、txt 文件、源文件等。文件是數據源的一種,最主要的作用是保存數據。在操作系統中,為了統一對各種硬件
在C語言中,文件操作都是由庫函數來完成的,這節介紹文件的打開和關閉。 文件的打開(fopen函數)fopen() 函數用來打開一個文件,它的原型為:FILE *
在C語言中,讀寫文件比較靈活,既可以每次讀寫一個字符,也可以讀寫一個字符串,甚至是任意字節的數據(數據塊)。本節介紹以字符形式讀寫文件。以字符形式讀寫文件時,每
fgetc() 和 fputc() 函數每次只能讀寫一個字符,速度較慢;實際開發中往往是每次讀寫一個字符串或者一個數據塊,這樣能明顯提高效率。 讀字符串函數fg
fgets() 有局限性,每次最多只能從文件中讀取一行內容,因為 fgets 遇到換行符就結束讀取。如果希望讀取多行內容,需要使用 fread 函數;相應地寫入
fscanf() 和 fprintf() 函數與前面使用的 scanf() 和 printf() 功能相似,都是格式化讀寫函數,兩者的區別在於 fscanf()
前面介紹的文件讀寫函數都是順序讀寫,即讀寫文件只能從頭開始,依次讀寫各個數據。但在實際開發中經常需要讀寫文件的中間部分,要解決這個問題,就得先移動文件內部的位置
選擇排序是排序算法的一種,這裡以從小到大排序為例進行講解。 基本思想及舉例說明選擇排序(從小到大)的基本思想是,首先,選出最小的數,放在第一個位置;然後,選出第
感謝 @向陽_只為一束光 在留言板中指出文章錯誤。冒泡排序是排序算法的一種,思路清晰,代碼簡潔,常被用在大學生計算機課程中。“冒泡”這個
插入排序是排序算法的一種,它不改變原有的序列(數組),而是創建一個新的序列,在新序列上進行操作。這裡以從小到大排序為例進行講解。 基本思想及舉例說明插入排序的基
快速排序是對冒泡法排序的一種改進。快速排序算法 的基本思想是:將所要進行排序的數分為左右兩個部分,其中一部分的所有數據都比另外一 部分的數據小,然後將所分得的兩
歸並排序也稱合並排序,其算法思想是將待排序序列分為兩部分,依次對分得的兩個部分再次使用歸並排序,之後再對其進行合並。僅從算法思想上了解歸並排序會覺得很抽象,接下
順序査找是一種簡單的査找算法,其實現方法是從序列的起始元素開始,逐個將序列中的元素與所要查找的元素進行比較,如果序列中有元素與所要查找的元素相等,那麼査找成功,
二分査找也稱折半査找,其優點是查找速度快,缺點是要求所要査找的數據必須是有序序列。該算法的基本思想是將所要査找的序列的中間位置的數據與所要査找的元素進行比較,如