21天学通C语言-学习笔记(1)
C語言與程序概述
C語言是現在世界上應用最廣泛、最受歡迎的計算機語言之一。C語言已經經歷了30多年的發展,并且仍在繼續進步。
1.1 C語言的歷史沿革
本節將介紹C語言的誕生、標準化過程及重要特點:
? 使用方便(32個關鍵字);
? 結構化編程(函數,控制語句);
? C語言是中級語言(結合了低級語言的直接訪問物理內存的優點,和高級語言的便于結構化編程的優點);
? 執行效率高(對代碼位級操作);
? C程序可移植性好(不同計算機和不同操作系統)。
這個程序的功能是向屏幕打印一個字符串“Hello,world!”
范例1-1
#include <studio.h>int main(void){ /*main函數*/printf("Hello,world!\n"); /*輸出"Hello,world!"*/return 0; }【運行結果】
【代碼解析】這是一個簡單的C語言源程序,它必須在一個編譯環境中編譯鏈接后才能運行。所有的C程序都有一個main函數,即程序第3行。main函數是程序的入口,程序運行時,先進入main函數,然后依次執行main函數體中的語句。在范例1-1中,進入main函數,先執行第4行語句調用printf函數,輸出字符串“Hello,world!”;再執行第5行return語句,return語句會導致函數結束,程序隨之結束。
1.2 數據結構與算法
一般來說,程序由 數據結構 和 算法 兩個部分組成。數據結構是一個個的實體,而算法是將它們聯系在一起的各種手段。
1.2.1 什么是數據結構
數據結構是程序存儲、組織數據的方式。
數據結構描述了數據元素之間的邏輯關系,數據必須存儲在內存中。數據在內存中的存儲結構是數據結構的實現形式,是數據結構在內存中的物理表示。數據結構是程序中處理數據的基本單位,在程序中作為一個整體來使用。
數據結構1——數組結構:
數組是一種可以存放數據的容器,其數據在內存中連續存放,訪問數組時,可 以直接使用數組名加下標的形式,比如一數組存有42名學生的信息,數組名是stuArray,數組序號從0開始排。
若要訪問第三個學生的信息,只需使用stuArray[[2]]即可。這種數據結構適用于頻繁讀取數據的情況。
數據結構2——鏈表結構:
鏈表也是一種可以存放數據的容器,但其數據在內存中分散存放的。鏈表中的相鄰元素間存在一些關系,這種關系有很多種形式,最典型的一種是每個鏈表元素都包含下一個元素的地址信息,通過該元素的信息就可以查找到下一個元素。
若同樣訪問第三個同學的信息,需要先訪問第一個同學的信息,從中獲得第二個同學的地址信息,然后訪問第二個同學的內存,從中獲得第三個同學的地址信息,之后才能訪問第三個同學的信息。也就是說,在數組中訪問一個元素,必須先按順序從第一個元素往后依次訪問,直至得到要訪問的元素。這種數據結構適用于刪除數據的操作。
1.2.2 什么是算法
算法就是解決一個問題的完整的步驟描述,是指完成一個任務準確而完整的步驟描述。
算法的優劣有兩個判別標準:
? 空間復雜度——執行算法需要占用的內存空間(代價)
? 時間復雜度——執行算法需要消耗的時間資源(效率)
1.3 程序設計概述
結構化程序設計之設計方法——自頂向下、逐步細化,同時嚴格使用三種基本控制結構(順序結構、選擇結構和循環結構)來構造程序。
? 順序結構:按照它們出現的先后順序執行的。
? 選擇結構:程序中存在一些分支,程序通過對一些條件的判斷選擇執行的分支。
? 循環結構:反復執行一系列操作,直到條件為假時跳出。
算法描述方法——算法語言、圖形描述、形式語言
? 算法語言:有偽代碼、各種程序設計語言、計算機語言等;
? 圖形描述:有流程圖、N-S圖,圖的描述應與算法語言的描述對應;
? 形式語言:用數學的方法,可以避免自然語言的二義性。
偽代碼:介于程序語言和自然語言之間的算法描述。在編程時,當設計好一個算法后,都要先將它們使用偽代碼描述出來,再使用程序語言來實現,其作用就像寫文章要先列好提綱一樣。
程序流程圖:算法的圖形描述方式。
N-S流程圖:按照結構化設計的思想,N-S流程圖為三種基本結構設計了特殊的結構圖,并以它們為基礎來描述其余所有的算法。
練習:使用偽代碼描述使用冒泡排序法將序列從混亂到達排序的算法,并畫出其程序流程圖或N-S流程圖。
偽代碼:
算法開始:設i值為N-1;當i>0{設j值為0;當j<1{如果array[j] > array[j+1]{交換第j個元素和第j+1個元素;}j自增1;}i自減1;} 算法結束
小結
本筆記介紹了C語言的歷史,包括C語言的誕生和C語言的標準化過程。同時,為學習C語言預備了一些基本知識,包括數據結構、算法和結構化程序設計等。
總結
以上是生活随笔為你收集整理的21天学通C语言-学习笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: emacs python debug_我
- 下一篇: 斐波那契数列c++代码_轮到你了,斐波那