從零開始學習C語言_第1頁
從零開始學習C語言_第2頁
從零開始學習C語言_第3頁
從零開始學習C語言_第4頁
從零開始學習C語言_第5頁
已閱讀5頁,還剩218頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、- Page 1-從零開始學習C語言 - Page 2- 內容全面詳細。本章一共分為18章,涵蓋了C語言中的 所有知識,并將C語言各個知識點做一個章節進行講解。并 舉出大量實例。 結構清晰明了。本章18章中,每章都分若干個小節, 每個小節一個小知識點。結構層次清晰可見。 講解由淺入深。向讀者介紹C語言的基本理論知識、數 據結構和基本的編程規則,讓讀者對C語言的基本知識以及 結構化程序設計思想有一個初步的認識;接著對C語言一些 復雜的數結構類型如數組、函數、指針操作、結構體與共用 體、文件等進行詳細的講解。 實例豐富多樣。本書所講的每一個知識點都運用充分 的實例進行講解說明,便于讀者掌握。 -

2、Page 3- 第1章 C語言入門基礎 C語言作為國際上流行的計算機高級語言,能實現多種 功能。為使讀者能夠對C語言有一個全面的認識,本章在介 紹C語言之前,還簡單的介紹了很多其他的相關知識。 計算機語言的演變; 數制、數制轉換與存儲; 程序設計思想算法; C語言的發展簡史和特點; 認識C語言程序; Turbo C V2.0的運行環境及基本操作。 - Page 4- 1.1 計算機語言的演變 機器語言 匯編語言到 高級語言 面向對象或面向問題的高級語言 - Page 5- 1.1.1 機器語言 機器語言是第一代計算機語言。計算機所使用的是由 “0”和“1”組成的二進制數,二進制是計算機的語言的

3、基礎, 所以也稱為二進制語言。機器語言指用機器碼書寫程序,不 易被人們識別和讀寫,所以使用機器語言是十分痛苦的,特 別是在程序有錯需要修改時,更是如此。而且,由于每臺計 算機的指令系統往往各不相同,所以在一臺計算機上執行的 程序,要想在另一臺計算機上執行,必須另編程序,造成了 重復工作。但由于計算機能夠直接識別程序中的指令,故而 運算效率是所有語言中最高的,這種用二進制編寫的程序也 叫“ 目標程序” 。 - Page 6- 1.1.2 匯編語言 匯編語言又稱符號語言,對機器指令進行簡單的符號 化,它也是利用計算機所有硬件特性并能直接控制硬件語言 。人們為了減輕使用機器語言編程的痛苦,對機器語言

4、進行 了一種有益的改進:用一些簡潔的英文字母、符號串來替代 一個特定的指令的二進制串,比如,用“ADD”表示加法, “MOV”表示數據傳遞等等,因此,人們就能理解程序所進 行的操作,方便用戶對程序進行糾錯及維護。 - Page 7- 1.1.3 高級語言 用高級語言編寫的程序稱為“源程序”,源程序不能在 計算機上直接運行,必須將其翻譯成二進制程序后才能執行 。翻譯有兩種方式:解釋程序和編譯程序。解釋程序是將一 次只讀一行源程序,并執行該行語言指定的操作,每次運行 用戶程序時,必須要用解釋程序。在程序的開發過程中,運 用解釋的方式執行程序,便于程序員對程序進行調試。編譯 程序是將源程序全部翻譯成

5、目標代碼即二進制程序后再執行 ,只讀取一次,節省了大量的時間。 - Page 8- 1.1.4 面向對象或面向問題的高級語言 第四代語言是使用第二代第三代語言編制而成的。面 向對象的語言是在面向過程的計算機語言的基礎上發展面來 的,如C+語言就是由C語言發展面來的。所謂面向對象, 就是基于對象的概念,以對象為中心,類和繼承為構造機制 ,認識了解刻畫客觀世界以及開發出相應的軟件系統。它是 把構成問題事務分解成各個對象,建立對象的目的不是為了 完成一個步驟,而是為了描述某個事物在整個解決問題的步 驟中的行為。比較典型代表的面向對蟪絳蟶杓樸镅雜C+、 Virtual Basic 、Delphi等。

6、- Page 9-1.2 數制、數制轉換與存儲 數制 數制轉換 計算機中數據的存儲 - Page 10- 1.2.1 數制 1二進制數 二進制數由兩個基本數字0、1組成,二進制數的運算規律 是逢二進一 。 例如: 100101可以寫成(100101)2或寫成100101B。 二進制數的加法和乘法運算如下: 0+0=0 0+1=1+0=1 1+1=10 0*0=0 0*1=1*0=0 1×1=1 1000110 + 0010101 1011011 - Page 11- 1.2.1 數制 2八進制數 八進制是由07八個數字組成,運算規則是逢8進一。 例如: 八進制261寫成(261)8、

7、(261)O。 - Page 12- 1.2.1 數制 3十進制數 十進制數是我們常用的數據表示方法,由09十個數字 組成,運算規則是逢10進一。 例如: 十進制126可表示為(126)10、126D、126。 - Page 13- 1.2.1 數制 4十六進制數 十六進制數由09以及AF十六個數字組成,AF分別表 示十進制數1015,運算規則是逢16進一。通常在表示進用 例如: (1FA)16、(1FA)H - Page 14- 注意 在C語言程序中 十六進制需要以0x開頭 八進制需要以0開頭, 例如: 0123表示八進制的123 0x123表示十六進制的123 - Page 15- 1.2

8、.2 數制的轉換 1二進制、八進制、十六進制轉換成十進制 規則:數碼乘以各自的權的累加 【例1-1】其他進制轉換成十進制。 4 0 (10001)B=2+2 =16+1=17 2 0 -2 (101.01)B=2+2 +2 =4+1+0.25=5.25 1 0 (011)O=8+8 =8+1=9 1 0 (72)O=7*8+2*8 =7*8+2*1=58 3 2 1 0 (112A)H=1*16+1*16 +2*16 +10*16 4394 - Page 16- 1.2.2 數制的轉換 2十進制轉換成二進制、八進制、十六進制 規則: 整數部分:除以進制取余數,直到商為0,余數從下到上排列。 小

9、數部分:乘以進制取整數,得到的整數從上到下排列。 - Page 17- 【例1-2】十進制轉換成其他進制。 (1)十進制20.345轉換成二進制 整數部分: 小數部分: 20/2=10 -余0 0.345*2=0.69 -取整數0 10/2=5 -余0 0.69*2=1.38 -取整數1 5/2=2 -余1 0.38*2=0.76 -取整數0 2/2=1 -余0 0.76*2=1.52 -取整數1 1/2=0 -余1 0.52*2=1.04 -取整數1 20.345D=10100.01011B - Page 18- 【例1-2】十進制轉換成其他進制。 (2)十進制100轉換成八進制、十六進制

10、100/8=12 -余4 100/16=6 -余4 12/8=1 -余4 6/16=0 -余6 1/8=0 -余1 100D=64H 100D=144O - Page 19- 1.2.2 數制的轉換 3二進制轉換八進制 規則: 整數部分:從右向左按三位進行分組,不足補零。 小數部分:從左向右按三位進行分組,不足補零。 【例1-3】將二進制數(1101101110.110101)轉換成 2 八進制數。 001 101 101 110.110 101 1 5 5 6 6 5 (1101101110.110101)=(1555.65) 2 8 - Page 20- 1.2.2 數制的轉換 4二進制轉

11、換成十六進制 規則: q 整數部分:從右向左按四位進行分組,不足補零。 q 小數部分:從左向右按四位進行分組,不足補零。 轉換 【例1-4】將二進制數(001101101110.110101) 2 成十六進制數。 0011 0110 1110.1101 0100 3 6 E D 4 (001101101110.110101) (36.ED4) 2= 16 - Page 21- 1.2.2 數制的轉換 5 八進制、十六進制轉換成二進制 規則: q 一位八進制對應三位二進制。 q 一位十六進制對應四位二進制。 【例1-5】八進制、十六進制轉換成二進制。 (136) = (001 011 110)

12、(17A) = (0001 0111 1010) 8 2 16 2 1 3 6 1 7 A - Page 22- 1.2.3 計算機中數據的存儲 如表示:比較一下1與-1 的原碼、反碼和補碼。 - Page 23- 1.3 程序設計思想算法 在我們遇到問題的時候,我們首先在大腦中形成一種 解題思路,然后再根據可行的思路運用具體的步驟解決問題 。在程序設計中,也需要有一種編程思路,這就是算法。 - Page 24- 1.3.1 算法的概念 在程序設計中,算法應該能夠離散成具體的若干個操 作步驟,而且每一個步驟都是能夠用程序設計語言提供的語 句或者語句串來完成的。 例如,求二個整數中的最大的數。解

13、決這個問題的算 法如下: 第1步 開始。 第2步 輸入二個整數a、b 。 第3步 比較a、b 的大小,如果a>b時,輸出a,否則輸 出b 。 第4步 結束。 需要注意的是,程序是有開始和結束的,所以算法必 須有“開始”和“結束”這兩個步驟。 - Page 25- 1.3.2 算法的特點 算法具有以下五個重要的特征: 1有窮性 2 確定性 3 。有效性 4 輸入 5 輸出 - Page 26- 1.3.3 算法的表示方法 1自然語言 【例1-6】用自然語言描述100以內正整數的和。 1設S代表總和,N代表正整數; 2S=0,N=1; 3S=S+N,原來的和加上一個正整數; 4N=N+1,把

14、下一個正整數賦給N; 5判斷N是否小于100,如果是跳轉到步驟3,否則跳 轉到步驟6; 6輸出S的值。 - Page 27- 1.3.3 算法的表示方法 2流程圖 常用流程圖構件 - Page 28- Page 29- 1.3.3 算法的表示方法 3偽代碼 將上述【例1-6】用偽代碼描述表示如下: N1; S0; do while N100 SS+N; NN+1; print S - Page 30- 1.3.3 算法的表示方法 4 N-S 圖 (1)順序結構N-S 圖 (2 )選擇結構N-S 圖 (3 )循環結構N-S 圖 - Page 31- Page 32- 1.3.4 算法分析 什么樣

15、的算法才是一個好的算法呢?通常從下列幾個 方面衡量算法的優劣: 1正確性 2 可讀性 3 健壯性 4 時間復雜度與空間復雜度 T(n)=O(f(n) S(n)=O(f(n) - Page 33- 1.4 C語言的發展簡史和特點 C語言能夠快速發展成為最受歡迎的語言之一,主要是 因為它具有強大的功能。它既有高級語言的特點,又具有匯 編語言的特點,它可以作為工作系統設計語言,編寫系統應 用程序,也可以作為應用程序設計語言,編寫不依賴計算機 硬件的應用程序。 - Page 34- 1.4.1 C語言的誕生與發展 1972年,貝爾實驗室D.M.Ritchie設計出C語言,當時Ken Thompson

16、剛剛使用匯編語言和B語言開發出UNIX操作系統,但用匯編語言開發系統 非常煩瑣,于是D.M.Ritchie用C語言改寫UNIX系統的內核。 1977年Dennis M.Ritchie 發表了不依賴于具體機器系統的C語言編 譯文本可移植的C語言編譯程序。 1978年由美國電話電報公司(AT&T)貝爾實驗室正式發布C語言。同 由B.W.Kernighan和D.M.Ritchie共同完成的了著名的The C Programming Language一書,通常簡稱為K&R 1983年,美國國家標準化協會(ANSI)根據語言問世以來各種版 本對語言的發展和擴充,制定了ANSI C 標準。

17、 1990年,國際標準化組織ISO(International Organization for Standards)接受了89 ANSI C 為ISO C 的標準(ISO9899-1990)。 目前c語言在世界范圍內都是相當流行的高級語言。C語言最初是為 了描述和實現unix系統的,但隨著c語言的發展,它適用任何平臺,C可 以用來編寫應用軟件,也可以用來編寫系統軟件。許多著名的系統軟件 ,如DBASE 都是由C 語言編寫的。用C 語言加上一些匯編語言子程序 ,就更能顯示C 語言的優勢了,像PC- DOS 、WORDSTAR等就是用這種方 法編寫的。 - Page 35- 1.4.2 C語言的

18、特點 C語言具有以下幾個基本特點。 1緊湊簡潔、靈活方便 2 運算符豐富多樣 3 數據結構多樣性 4 程序語言模塊化 5 控制語句結構化 6 接近硬件與系統 7 運行效率高 8 可移植性好 - Page 36- 第2章 認識C語言程序 C語言程序的結構特征; C語言程序的書寫風格; C語言程序的開發過程; 熟悉Visual C+ 6.0集成開發環境; 用Visual C+ 6.0運行一個C程序。 - Page 37- 2.1 C語言程序的結構特征 # include<stdio.h> 文件包含 void main() 主函數 程序開始 int a ,b ,sum; 變量定義 sca

19、nf( "%d", &a ); /*輸入a*/ 格式輸入函數與注釋 scanf( "%d", &b ); 格式輸入函數 sum=a+b; /*對a、b求和*/ 求和與注釋 printf("sum=%d n",sum); 格式輸出函數 程序結束 - Page 38- 2.1 C語言程序的結構特征 1文件包含 通用的格式是 # include<文件名>或# include“文件名”它 屬于預處理命令中的一種。文件包含的作用是將該程 序編譯時所需要的文件復制到本文件,再對合并后的文件進 行編譯。stdio.h是基

20、本輸入輸出的頭文件,在上例中,我們 用到輸入輸出函數printf()、scanf(),因此需要在源程序的開 頭寫上# include<stdio.h> 。 - Page 39- 2.1 C語言程序的結構特征 2主函數 main()表示主函數,這是系統提供的特殊函數,每一個C語言程序 有且只有一個main()函數。函數的內部用一對大括弧括起來,括起來的 部分稱為函數體。 # include<stdio.h> 文件包含 void main() 主函數 程序開始 int a ,b ,sum; 變量定義 scanf( "%d", &a ); /*輸入

21、a*/ 格式輸入函數與注釋 scanf( "%d", &b ); 格式輸入函數 sum=a+b; /*對a、b求和*/ 求和與注釋 printf("sum=%d n",sum); 格式輸出函數 程序結束 - Page 40- 2.1 C語言程序的結構特征 3 變量的定義 一個變量在內存中占據一定的存儲單元,在該存儲單 元中存放變量的值。本行定義了三個變量a、b、sum,分別 用來存儲等待輸入的兩個整型數和他們的和,便于以后的操 作。 C語言中,變量的定義必須符合標識符的命名規則,即 標識符只能字母(大小可均可)、數字和下劃線3種字符組 成,第1個

22、字母不能是數字。 C語言對大小寫嚴格區分,變量一般用小寫。變量遵循 先定義后使用的原則,定義變量有利于系統分配存儲空間, 定義變量其實就是在內存中開辟存儲單元。 - Page 41- 2.1 C語言程序的結構特征 4格式輸入與輸出函數 輸入函數的作用是將輸入設備(如鍵盤)按指定的格式輸入一組數 據,賦到指定的變量存儲單元,作為變量的值。 輸出函數的作用是向系統指定的輸出設備(如顯示器)輸出若干個 任意類型的數據。 # include<stdio.h> 文件包含 void main() 主函數 程序開始 int a ,b ,sum; 變量定義 scanf( "%d"

23、;, &a ); /*輸入a*/ 格式輸入函數與注釋 scanf( "%d", &b ); 格式輸入函數 sum=a+b; /*對a、b求和*/ 求和與注釋 printf("sum=%d n",sum); 格式輸出函數 - Page 42- 2.1 C語言程序的結構特征 5 注釋部分 例子中的行“/*”開頭到“*/”結尾之間的內容表示注 釋,它可以在一行書寫或分多行書寫,可寫在程序的任何位 置。 中的注釋部分是對所要進行的操作的說明,是 一個輸出語句,輸入變量a的值,是一個賦值語句,將a、 b 的相加的和賦給sum 。 - Page 43

24、- 2.2 C語言程序的書寫風格 為了增強程序的可讀性,便于人們理解和查錯,建議 使用良好的書寫格式。 - Page 44-#include <stdio.h> void main( ) int k=0; char c=A ; /*定義一個整型變量,一個字符變量,并賦值*/ do /*直到型循環*/ switch (c+) /* switch 多分支語句*/ case 'A': k+; break; case 'B': k-; case 'C': k+=2; break; case 'D': k=k%2; break;

25、 case 'E': k=k*10; break; default: k=k/3; k+; while(c<'G'); printf("k=%dn", k); - Page 45- 2.2 C語言程序的書寫風格 C語言的書寫格式,具體如下: 1、C語言程序使用英文小寫字母書寫。大寫字母一般 符號常量或特殊用途使用。C語言區分字母大小寫,如 student和STUDENT是兩不同的標識符。 2、標識符是用于標識某個量的符號,可由程序員任意 定義,但為了增加程序的可讀性,命名應盡量有相應的意義 ,以便閱讀理解以及程序員之間的交流。 - Pa

26、ge 46- 2.2 C語言程序的書寫風格 3 、不使用行號,通常按語句的順序執行。前面的例子 中我們使用編號是為了講解的方便,在正常的源程序中,不 能使用。 4、所有語句都必須以分號“ ; ”結束,作為語句之間的 分隔符。 5、C程序中一個語句可以占多行,一行也可以有多個 語句,但要用分號分隔開。 - Page 47- 2.2 C語言程序的書寫風格 6、不強制規定語句在一行中的起始位置,但同一結構 層次的語句應左對齊。低一層次的語句或說明可比高一層次 的語句或說明縮進若干格后書寫,以便看起來更加清晰,增 加程序的可讀性。屬于同一模塊時要用“ ”括起來,如上例 中的do-while語句和switch語句。 7、為了使程序更加清晰,可以使用空行,空行不影響 程序的執行,但不要在一個語句內加空行。 - Page 48- 2.2 C語言程序的書寫風格 8、C語言中有的符號必須配對使用。如注釋符號“/* */”,模塊起止符號“ ”,圓括號“ ( )”等。在輸入的時為 了避免忘記,可連續輸入這些起止符號,然后再在其中進行 插入來完成內容的編輯。 9、在源程序中,凡是用“/*”和“*/”括起來的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論