內容,由淺入深:本書涵蓋了C語言課程中的所有知識點,從零基礎語法開始講解,從易到難,內容翔實,即適合沒有任何C語言基礎的初學者,又適用于一定基礎但想精通C語言的人員。
視頻教學,快速提高:本書配有同步教學視頻錄像,與書中內容緊密結合并相互補充,讓讀者更加直觀體驗實際應用環境,快速掌握編程技巧。
實例講解,易于上手:本書打破傳統教材按部就班講解知識點的模式,重難知識點均配有典型例題,并給出實例的完整代碼、運行結果及對實例深入分析,使讀者可以輕松理解,易于上手。
結構精巧,貼心提示:本書每章章前均設有“章前導讀”,讀者在開始本章知識學習之前,可大致了解本章知識結構。另外,在各章節使用了很多“說明”、“注意”等小欄目,幫助讀者更加清楚地理解基本概念,掌握應用技巧。
應用實踐,學以致用:本書每章結束提供的“實戰練習”是根據每章知識點精心設計的,讀者可以自我實踐,檢查知識掌握情況,舉一反三,學以致用。
《C語言從入門到精通》從初學者的角度出發,以通俗易懂的語言,豐富多彩的實例,詳細介紹了使用C語言進行程序開發應該掌握的各方面知識。全書共分17章,包括概述、C語言程序的組成、C語言的基本構成元素和數據類型、運算符和表達式、用戶與計算機交互——輸入/輸出、分支結構程序設計、循環結構與轉移語句、數組、函數、指針、結構體和共用體、位操作、編譯與預處理、文件、內存管理、網絡編程以及通信錄管理系統。
本書適合任何想學習C語言的讀者,無論您是否從事計算機相關行業,是否接觸過C語言,均可通過學習快速掌握C語言的開發方法和技巧。
未來教育教學與研究中心是一家專門從事計算機教育類產品研發的機構,作者團隊中不僅擁有豐富教學經驗的高校教師,還有具有實戰經驗的一線研發人員。多年來,本中心一直致力于圖書質量和品牌的建設,努力打造精品圖書,努力建設團隊,提升綜合競爭力,為廣大讀者提供高質量的教育教學產品。
第1章概述
1.1C語言的起源
1.1.1程序語言的簡述
1.1.2C語言的發展史
1.2C語言的特點
1.3C語言的及時個例子
——Hello C's World
1.4認識常用開發環境
1.4.1C語言程序編寫與
運行流程
1.4.2C語言常用開發環境
1.4.3Visual C 6.0
1.5實戰練習
第2章C語言程序的組成
2.1進一步認識C語言程序
2.2聲明區
2.2.1頭文件
2.2.2函數聲明
2.2.3變量聲明
2.3主函數
2.4函數定義區
2.5注釋
2.6代碼的規范
2.7實戰練習
第3章C語言的基本構成元素和
數據類型
3.1關鍵字
3.2標識符
3.3數據類型
3.4常量
3.4.1整型常量
3.4.2實型常量
3.4.3字符型常量
3.4.4轉義字符
3.4.5符號常量
3.5變量
3.5.1整型變量
3.5.2實型變量
3.5.3字符型變量
3.6變量的存儲類別
3.6.1靜態存儲與動態存儲
3.6.2auto變量
3.6.3static變量
3.6.4register變量
3.6.5extern變量
3.7綜合運用
3.8實戰練習
第4章運算符和表達式
4.1表達式
4.2賦值運算符與賦值表達式
4.2.1變量賦初值
4.2.2自動類型轉換
4.2.3強制類型轉換
4.3算術運算符與算術表達式
4.3.1算術運算符
4.3.2算術表達式
4.3.3優先級與結合性
4.3.4自增/自減運算符
4.4關系運算符與關系表達式
4.4.1關系運算符
4.4.2關系表達式
4.4.3優先級與結合性
4.5邏輯運算符與邏輯表達式
4.5.1邏輯運算符
4.5.2邏輯表達式
4.5.3優先級與結合性
4.6位邏輯運算符與
位邏輯表達式
4.6.1位邏輯運算符
4.6.2位邏輯表達式
4.7逗號運算符與逗號表達式
4.8復合賦值運算符
4.9綜合運用
4.10實戰練習
第5章用戶與計算機交互
——輸入輸出
5.1程序語句
5.2字符數據輸入輸出
5.2.1字符數據輸出
5.2.2字符數據輸入
5.3字符串輸入輸出
5.3.1字符串輸出函數
5.3.2字符串輸入函數
5.4格式輸出函數——printf()
5.5格式輸入函數——scanf()
5.6綜合運用
5.7實戰練習
第6章分支結構程序設計
6.1if語句
6.1.1單分支選擇結構
——if語句
6.1.2雙分支選擇結構
——if…else語句
6.1.3多分支選擇結構
——else if語句
6.1.4多分支選擇結構
——if語句的嵌套形式
6.2條件運算符
6.3多重選擇——switch語句
6.3.1switch語句的基本形式
6.3.2多路開關模式的
switch語句
6.4多分支語句的比較
6.5綜合運用
6.6實戰練習
第7章循環結構與轉移語句
7.1循環結構
7.2當型循環語句
——while語句
7.3直到型循環語句
——do-while語句
7.4for語句
7.4.1for語句的使用
7.4.2for語句的變體
7.4.3for語句中的逗號應用
7.5循環語句的比較
7.6循環的嵌套
7.7轉移語句
7.7.1goto語句
7.7.2break語句
7.7.3continue語句
7.8綜合運用
7.9實戰練習
第8章數組
8.1一維數組
8.1.1一維數組的定義和引用
8.1.2一維數組的初始化
8.1.3一維數組的應用舉例
8.2二維數組
8.2.1二維數組的定義和引用
8.2.2二維數組的初始化
8.2.3二維數組的應用舉例
8.3多維數組
8.4字符數組
8.4.1字符數組的定義和引用
8.4.2字符數組的初始化
8.4.3字符數組的結束標志
——'\0'
8.4.4字符數組的輸入和輸出
8.4.5字符數組的應用舉例
8.5數組的排序算法
8.5.1選擇法排序
8.5.2冒泡法排序
8.5.3交換法排序
8.5.4插入法排序
8.5.5折半法排序
8.5.6排序算法的比較
8.6字符串處理函數
8.6.1字符串復制
8.6.2字符串連接
8.6.3字符串比較
8.6.4字符串大小寫轉換
8.6.5獲取字符串長度
8.7實戰練習
第9章函數
9.1函數的概述
9.2函數的定義
9.2.1函數定義的形式
9.2.2函數的定義與聲明
9.3函數的返回語句
9.3.1從函數體內返回
9.3.2函數的返回值
9.4函數的參數
9.4.1形式參數與實際參數
9.4.2函數參數的特殊情況
——數組
9.4.3main()函數的參數
9.5函數的調用
9.5.1函數調用的一般方式
9.5.2函數的嵌套調用
9.5.3函數的遞歸調用
9.6內部函數和外部函數
9.6.1內部函數
9.6.2外部函數
9.7局部變量和全局變量
9.7.1局部變量
9.7.2全局變量
9.8C語言庫函數
9.9實戰練習
第10章指針
10.1指針概述
10.1.1地址與指針
10.1.2變量與指針
10.1.3指針變量
10.1.4指針自加自減運算
10.2數組與指針
10.2.1一維數組與指針
10.2.2二維數組與指針
10.2.3字符串與指針
10.2.4字符串數組
10.3指向指針的指針
10.4指針變量作函數參數
10.5返回指針的函數和指向函數的
指針
10.6實戰練習
第11章結構體和共用體
11.1結構體
11.1.1結構體類型的概念
11.1.2結構體變量的定義
11.1.3結構體變量的引用
11.1.4結構體變量的初始化
11.2結構體數組
11.2.1定義結構體數組
11.2.2初始化結構體數組
11.3結構體指針
11.3.1指向結構體變量的
指針
11.3.2指向結構體數組的
指針
11.3.3結構體作為函數參數
11.4結構體的嵌套
11.5鏈表
11.5.1鏈表概述
11.5.2創建動態鏈表
11.5.3輸出鏈表
11.6鏈表相關操作
11.6.1鏈表的插入操作
11.6.2鏈表的刪除操作
11.7共用體
11.7.1共用體的概念
11.7.2共用體變量的引用
11.7.3共用體變量的初始化
11.7.4共用體類型的
數據特點
11.8枚舉類型
11.9實戰練習
第12章位操作
12.1位與字節
12.2位運算操作符
12.2.1“與”運算符
12.2.2“或”運算符
12.2.3“取反”運算符
12.2.4“異或”運算符
12.2.5“左移”運算符
12.2.6“右移”運算符
12.3循環移位
12.4位段
12.4.1位段的概念與定義
12.4.2位段相關說明
12.5實戰練習
第13章編譯與預處理
13.1宏定義
13.1.1不帶參數的宏定義
13.1.2帶參數的宏定義
13.2#include指令
13.3條件編譯
13.3.1#if命令
13.3.2#ifdef及#ifndef命令
13.3.3#undef命令
13.3.4#line命令
13.3.5#pragma命令
13.4實戰練習
第14章文件
14.1文件概述
14.2文件基本操作
14.2.1文件指針
14.2.2文件的打開
14.2.3文件的關閉
14.3文件的讀和寫
14.3.1fputc()函數
14.3.2fgetc()函數
14.3.3fputs()函數
14.3.4fgets()函數
14.3.5fprintf()函數
14.3.6fscanf()函數
14.3.7fread()函數和
fwrite()函數
14.4文件的定位
14.4.1fseek()函數
14.4.2rewind()函數
14.4.3ftell()函數
14.5實戰練習
第15章內存管理
15.1內存組織形式
15.2內存管理函數
15.2.1malloc()函數
15.2.2calloc()函數
15.2.3realloc()函數
15.2.4free()函數
15.3內存丟失
15.4實戰練習
第16章網絡編程
16.1計算機網絡基礎
16.1.1OSI七層參考模型
16.1.2IP地址
16.1.3網絡地址解析
16.1.4域名系統
16.1.5TCP/IP協議
16.1.6網絡字節順序
16.2套接字概述
16.2.1有關套接字的概念
16.2.2TCP的套接字的
socket編程
16.2.3UDP的套接字的
socket編程
16.3套接字函數
16.3.1套接字函數介紹
16.3.2基于TCP的網絡聊天
程序
16.4實戰練習
第17章通信錄管理系統
17.1需求及功能分析
17.2功能實現
17.2.1系統運行界面
17.2.2添加新的聯系人
17.2.3顯示聯系人信息
17.2.4刪除聯系人信息
17.2.5查找聯系人信息
17.2.6修改聯系人信息
17.3本章小結
附錄
1.1.1程序語言的簡述
程序是指可以被計算機連續執行的指令語句的集合。通常為了解決一個實際問題,人們預先將處理問題的步驟、方法等一系列的過程編寫成程序,然后輸入計算機,計算機只需要執行程序中的指令。所以,程序設計是用計算機解決一個實際應用問題的整個處理過程。
按照計算機語言的發展史來劃分,計算機語言可以分為三個發展階段:機器語言、匯編語言和高級語言。
1.機器語言
機器語言是低級語言,是用二進制代碼表示的計算機能直接識別和執行的一種機器指令集合,每一條指令都是由0、1構成。機器語言的優點是計算機可以直接識別,不需要進行任何翻譯,執行效率高;缺點是程序員需要熟記全部指令代碼和代碼含義,非常繁瑣和困難。
2.匯編語言
匯編語言是在機器語言的基礎上發展而來的,是面向機器設計的程序語言,屬于符號標記語言。匯編語言相較于機器語言,便于閱讀和理解,但是增加了稍許翻譯的代價。
3.高級語言
由于匯編語言依賴于硬件體系,并且該語言中的助記符號數量較多,所以運用起來不夠方便。為了使程序語言更貼近人類的自然語言,同時又不依賴于計算機硬件,便產生了高級語言。目前傳統的高級語言有:Fortran、ALGOL、Basic、Pascal、C、C 、Java等。
1.1.2C語言的發展史
作為一種程序設計語言,C語言既具有匯編語言的特點,又具有高級語言的特點,可以作為系統設計語言來編寫與硬件系統相關的應用程序,也可以作為應用程序設計語言來編寫不依賴計算機硬件的應用程序,應用非常廣泛。C語言的發展歷程如圖1.1所示。
A語言
CPL語言
BCPL語言
B語言
C語言
圖1.1C語言的發展歷程
1.A語言
C語言的發展非常有趣,它的原型是ALGOL 60語言,也稱為A語言。ALGOL 60是一種面向問題的高級語言,不適合編寫系統程序,其特點是具有局部性、動態性、遞歸性和嚴謹性。ALGOL 60是程序設計語言發展史上的一個里程碑,它標志著程序設計語言成為一門獨立的科學學科。
2. CPL語言(Combined Programming Language)
1963年,劍橋大學將A語言發展成為CPL語言,CPL語言在ALGOL 60的基礎上與硬件接近了一些,但規模仍然比較宏大,難以實現。
3.BCPL語言(Basic Combined Programming Language)
1967年,劍橋大學馬丁 理查斯(Martin Richards)對CPL進行了簡化,推出了BCPL語言。BCPL是一種結構化程序設計語言,它能夠直接處理與機器本身數據類型相近的數據,具有與內存地址對應的指針。
4.B語言
在20世紀70年代初期,時任美國貝爾實驗室的肯 湯普遜對BCPL進行了修改,設計出了B語言。B語言類似早期版本的C語言,它只有一種數據類型——計算機字,大部分操作都將其作為整數對待,還包括許多庫函數,其作用類似于C語言中的標準輸入輸出函數庫。
5.C語言
B語言過于簡單,功能有限,美國貝爾實驗室的丹尼斯 里奇在B語言的基礎上設計了一種新語言——C語言。1972年,丹尼斯 里奇完成了C語言的設計,并成功使用C語言編寫了操作系統,降低了作業系統的修改難度。
1983年,美國國家標準學會(ANSI)對C語言進行了標準化,當年頒布了及時個C語言標準草案(83 ANSI C);1987年又頒布了另一個C語言標準草案(87 ANSI C);1994年,國際標準化組織ISO修訂了C語言的標準;1999年又頒布了C語言標準草案,并在2000年3月被ANSI采用,即C99,正式名稱為ISOIEC9899:1999;2011年12月8日,ISO和國際電工委員會IEC再次頒布了C語言的新標準,簡稱C11標準,是目前為止C語言的近期標準。
1.2C語言的特點
C語言是一種通用的程序設計語言,主要有以下特點。
1.高效性
從C語言的發展歷程可以看到,它繼承了低級語言的優點,能產生非常高效的代碼。一般情況下,C語言生成目標代碼的執行效率只比匯編程序低10%~20%。
2.可讀性
C語言本身屬于高級語言,具有友好的編寫性和可讀性,它的語法形式和人們所使用的語言相似,書寫自由,結構規范。C語言集合了低級語言和高級語言的優點。
3.靈活性
C語言有豐富的運算符,使得C語言的運算類型極其豐富,表達式類型多樣化,可以靈活使用各種運算符實現其他高級語言難以實現的運算,給程序員更多的想象和發揮空間。
4.功能豐富
除了豐富的運算符,C語言還有豐富的數據結構,可以用來實現各種復雜數據結構的運算,指針的引入,讓程序執行效率更高。
5.移植性好
C語言具有良好的移植性,使得C語言在不同的操作系統之間,簡單的修改或不用修改就可以進行跨平臺的程序開發。
可見,C語言的上述特點,使得它在程序員選擇語言時倍受青睞,這也是C語言發展快速,目前仍處于不敗地位的原因。
1.3C語言的及時個例子——Hello Cs world
在步入C語言世界之前,不要對它產生恐懼,覺得編程是一件很高大上的事情,只屬于科研學者的專利。當你真正接觸并學習C語言后,就會感覺它沒有那么可怕,C語言是人類共有的財富,它跟數學、化學一樣,只要努力學習就可以掌握。首先,我們通過一個簡單的程序,來看看C語言程序的組成部分,在整體上有個認識。
[例1.1]一個簡單的C語言程序。
1#include 23int main()4{5printf("Hello Cs world!\n"); //輸出要顯示的信息6return 0;7}在Visual C 6.0編譯器上運行例1.1的程序,運行結果如圖1.2所示(Visual C 6.0我們后面會詳細介紹)。
圖1.2簡單的C程序的運行結果現在,來分析一下這個實例程序,當然,讀者可能很多地方看不懂。不要緊,這里只是簡單認識一下,隨著后面的學習,再來熟悉這段代碼,會覺得這真是一個很簡單的程序。這段程序共有7行,及時印象就是其中包含著若干符號、空格、空行以及認識或不認識的英文單詞。逐行來分析這段程序。
1.#include指令
例1.1中的第1行:#include
include在C語言中是文件包含命令,它的功能是進行有關預處理操作,以“#”開頭,后面尖括號的內容是一個文件名,稱為頭部文件。這條語句的意思是在程序的預處理階段,將文件stdio.h的內容包含到及時行的位置。
2.空行
例1.1中的第2行:空行
空行體現了C語言的靈活性。程序中的空格、空行、跳格并不影響程序的編譯和運行,所以可以通過添加或刪除空格、空行來改變程序的格式。如果在程序中不使用空格、空行等,程序就會顯得特別擁擠,凌亂;相反,適當的空格、空行和制表符可以編寫出更加美觀、規范的程序,就像我們平常寫作文一樣,適當的標點和換行,可以讓作文段落有序。整潔、規范的代碼可以提高代碼的可讀性,便于代碼后期維護。
不是所有的空格都沒有作用。比如C語言的條件控制語句“else if”之間就必須有空格,如果將空格去掉,程序編譯就通不過。
3.main函數
例1.1中的第3行:int main()
這一行代碼的意思是main()函數是有整型返回值的函數。其中int是C語言的關鍵字,代表整數類型,關于整數類型和函數的內容后面會詳細介紹。
這一部分稱為函數的頭部分。C語言的每個程序都會有一個main()函數,代表程序的入口,也就是說,程序都是從main()函數開始,然后執行main的函數體。
4.函數體
例1.1中的第4~7行:
{
printf("Hello Cs world!\n"); //輸出要顯示的信息
return 0;
}
C語言中函數分為兩部分:一個是函數頭,一個是函數體。在第3點中介紹了函數的頭部分,簡稱函數頭;程序中的第4~7行構成函數體,函數體也稱為函數的語句塊,必須由大括號括起來。例題中的函數體由兩條語句構成,也是函數要執行的內容。
5.輸出語句
例1.1中的第5行:
printf("Hello Cs world!"); //輸出要顯示的信息
這條語句是函數的執行語句之一。其中printf()也是函數,它的作用是向控制臺輸出小括號內的內容,括號內的內容也稱為函數的參數,這里是指“Hello Cs world!\n”。在這個字符串中,我們可以看到是“\n”符號,在C語言中,稱為轉義字符,它的作用是換行。函數、字符串、轉義字符在后面會詳細介紹。
未來教育是國內較早致力于計算機類教育產品研發的文化出版機構之一,一直在該領域起著領跑者作用。
還可以的啊
很務實的一本書
還不錯,就是快遞慢了些
一本非常不錯的書,只可惜當當的包裝服務越來越不給力了
不錯,挺好的書
才看,內容很詳細,需要下載的程序不是很好。
很實用,C語言入門還是不錯
書上部有點皺
還可以接受
書很好,本來看到差評,還是很擔心的哈哈
沒給商品購物詳情,你們工作態度不端正
書很好不錯
不錯:不錯很不錯
書不錯,好好看,自學一下了,多張個本事
書不錯,非常好。
像是二手書
資料全面,價格優惠,很有用
很好的一本書,值得一看
紙質很好,發貨很快,內容詳細,最后一本書封皮有瑕疵,整體可以
我是買了《Visua C++ 2013入門經典(第7版)》之后,才買的這本書,感覺更適合自己閱讀和參考。講得比較詳細,不枯燥。全五分好評!不錯的參考書!推薦購買。
大學課本編排太亂,這本書挺系統的,就是比較基礎的,基本符合大一課程吧
同學推薦的這本書說質量很好,就買來看看,果然內容詳細,主要是正版,希望一次通過
高端大氣上檔次,內容很細致,菜鳥上手簡單,值得信賴。
書籍質量很好,內容很詳細,很適合學習,書里還送了電子資料,不錯
書本整體還可以,包裝也不錯的,就是書頁不是很光滑!!不過內容還是寫得可以的,下次還會再來當當買書的!!
書很好,紙質不錯,里面內容詳細,講解的也很細致,簡單易懂,很方便自己學習
對這個感興趣,在網上看了一些資料,想來想去還是決定買一本書回來,這樣才有學習的感覺!書不錯,已經在學習中了。
寶貝收到了,真心不錯,提高語言的的好幫手。發貨速度很快!快遞包裝挺好的,書本也沒有折壞,書本印刷清晰,很好很贊!~客服服務也很好,有需要時還會來你店購買,祝店家買賣興隆!