編輯推薦
本書依據全國計算機等級考試大綱編寫,內容設置閤理、考點清晰準確,重難點配有微視頻,手機掃描二維碼即可觀看。配套光盤中含有考試模擬係統,題量豐富,解析詳盡,軟件功能強大。
內容簡介
本書依據教育部考試中心發布的全國計算機等級考試大綱以及編者多年對等級考試的研究編寫而成,旨在幫助考生(尤其是非計算機專業的初學者)學習相關內容,順利通過考試。
本書主要內容包括:程序設計基礎,程序設計的初步知識,順序結構,選擇結構,循環結構,字符型數據,函數,指針,數組,字符串,對函數的進一步討論,C語言中用戶標識符的作用域和存儲類,編譯預處理和動態存儲分配,結構體數據類型,位運算,文件。
本書體例簡單、圖文並茂,內容設置閤理、考點清晰準確;重難考點配有微視頻課程,通過掃描書中二維碼即可觀看;配套光盤中提供模擬考試軟件及課後習題素材,便於考生同步訓練,鞏固提高。
本書可作為全國計算機等級考試二級培訓教材和自學用書。
作者簡介
未來教育教學與研究中心,是一傢專門從事教育産品策劃、研發、銷售的高新知識企業。專業研究等考19年,擁有著專業的教師團隊,與電子工業、人民郵電、電子科技大學等多個大型國傢齣版社閤作,每年纍積為數萬餘名考生服務。
目錄
第 1章 程序設計基礎
1.1 程序設計的基本概念
1.1.1 C語言與運行環境
1.1.2 程序設計
1.2 算法
1.3 結構化程序設計
1.3.1 結構化程序設計
1.3.2 模塊化程序設計
課後習題
第 2章 程序設計的初步知識
2.1 簡單C程序的構成
2.2 標識符、常量和變量
2.2.1 標識符
2.2.2 常量
2.2.3 變量
2.3 整型數據
2.3.1 整型常量
2.3.2 整型變量
2.4 實型數據
2.4.1 實型常量
2.4.2 實型變量
2.5 算術錶達式
2.5.1 基本的算術運算符
2.5.2 運算符的優先級和結閤性
2.5.3 強製類型轉換
2.6 賦值錶達式
2.6.1 賦值運算符和賦值錶達式
2.6.2 復閤賦值錶達式
2.6.3 賦值運算符中的類型轉換
2.7 自加、自減和逗號運算符
2.7.1 自加、自減運算符
2.7.2 逗號運算符
課後習題
第 3章 順序結構
3.1 賦值語句
3.2 數據輸齣
3.2.1 printf()函數的一般調用形式
3.2.2 printf()函數的輸齣格式說明
3.3 數據輸入
3.3.1 scanf()函數的一般調用形式
3.3.2 scanf()函數的輸入格式說明
課後習題
第 4章 選擇結構
4.1 關係運算符和邏輯運算符
4.1.1 C語言的邏輯值
4.1.2 關係運算符和關係錶達式
4.1.3 邏輯運算符和邏輯錶達式
4.2 條件錶達式構成的選擇結構
4.3 if 語句和if語句構成的選擇結構
4.3.1 if語句
4.3.2 含else子句的if語句
4.3.3 嵌套的if語句
4.3.4 在else子句中嵌套if語句
4.4 switch語句結構
4.4.1 switch語句
4.4.2 switch語句的執行過程
4.4.3 在switch語句體中使用break語句
課後習題
第 5章 循環結構
5.1 for語句和用for語句構成的循環結構
5.1.1 for語句構成的循環
5.1.2 for循環的執行過程
5.2 while語句和用while語句構成的
循環結構
5.2.1 while語句構成的循環
5.2.2 while循環的執行過程
5.3 do-while語句和用do-while語句
構成的循環結構
5.3.1 do-while語句構成的循環
5.3.2 do-while循環的執行過程
5.4 循環的嵌套
5.5 break語句和continue語句在循環中
的作用
5.5.1 break語句
5.5.2 continue語句
課後習題
第 6章 字符型數據
6.1 字符常量
6.1.1 字符型常量
6.1.2 轉義字符
6.1.3 字符串常量
6.2 字符變量
6.3 字符的輸入與輸齣
6.3.1 調用printf和scanf函數輸齣和
輸入字符
6.3.2 調用putchar和getchar函數輸入和
輸齣字符
課後習題
第 7章 函數
7.1 庫函數
7.2 函數的定義和返迴值
7.2.1 函數定義的語法
7.2.2 函數的返迴值
7.3 函數調用
7.4 函數的說明
7.5 調用函數和被調用函數之間數據傳遞
課後習題
第 8章 指針
8.1 指針與指針變量
8.2 指針變量的定義和指針變量的類型
8.3 給指針變量賦值
8.3.1 給指針變量賦地址
8.3.2 給指針變量賦“空”值
8.4 對指針變量的操作
8.4.1 通過指針引用一個存儲單元
8.4.2 移動指針
8.4.3 移動比較
8.5 函數之間地址值的傳遞
8.5.1 形參為指針變量時,實參和形參
之間的數據傳遞
8.5.2 通過傳遞地址值在被調用函數中
直接改變調用函數中變量的值
課後習題
第 9章 數組
9.1 一維數組的定義和一維素組元素的引用
9.1.1 一維數組的定義
9.1.2 一維數組元素的引用
9.1.3 一維數組的初始化
9.1.4 通過賦初值定義數組的大小
9.2 一維數組和指針
9.2.1 一維數組和數組元素的地址
9.2.2 通過數組的首地址引用數組
元素
9.2.3 通過指針引用一維素組元素
9.3 函數之間對一維數組和數組元素的引用
9.3.1 數組元素做實參
9.3.2 數組名作實參
9.3.3 數組元素地址作實參
9.3.4 函數的指針形參和函數體中
數組的區彆
9.4 二維數組的定義和二維數組元素的
引用
9.4.1 二維數組的定義
9.4.2 二維數組元素的引用
9.4.3 二維數組初始化
9.4.4 通過賦值初始化定義二維
數組的大小
9.5 二維數組和指針
9.5.1 二維數組和數組元素的地址
9.5.2 通過地址引用二維數組元素
9.5.3通過建立一個指針數組引用
二維數組元素
9.5.4 通過建立一個行指針引用二維
數組元素
9.6 二維數組名和指針數組作為實參
9.6.1二維數組名作為實參時,和形參之
間的數據傳遞
9.6.2 指針數組作為實參時,和形參之間
的數據傳遞
課後習題
第 10章 字符串
10.1 用一維字符數組存放字符串
10.2 使指針指嚮一個字符串
10.2.1 通過賦初值的方式使指針指嚮
一個字符串
10.2.2 通過賦值運算使指針指嚮一個
字符串
10.2.3 用字符數組作為字符串和用指針
指嚮字符串之間的區彆
10.3 字符串的輸入和輸齣
10.3.1 輸齣字符串
10.3.2 輸入字符串
10.4 字符串數組
10.5 用於字符串處理的函數
課後習題
第 11章 對函數的進一步討論
11.1 傳給main()函數的參數
11.2 通過實參嚮函數傳遞函數名或指嚮
函數的指針變量
11.3 函數的遞歸調用
課後習題
第 12章 C語言中用戶標識符的
作用域和存儲類
12.1 局部變量、全局變量和存儲分類
12.1.1 用戶標識符的作用域
12.1.2 局部變量、全局變量、存儲
分類
12.2 局部變量及其作用域和生存期
12.2.1 auto變量
12.2.2 register變量
12.2.3 靜態存儲類和局部變量
12.3 全局變量及其作用域和生存期
12.3.1 全局變量的作用域和生存期
12.3.2 在同一編譯單位內用extern說明
符擴展全局變量的作用域
12.3.3 在不同編譯單位內用extern說明
符擴展全局變量的作用域
12.4 函數的存儲分類
課後習題
第 13章 編譯預處理和動態存儲
分配
13.1 編譯預處理
13.1.1 宏替換
13.1.2 文件包含
13.2 動態存儲分配
課後習題
第 14章 結構體數據類型
14.1 用typedef說明一種類型名
14.2 結構體類型
14.2.1 結構體類型的說明
14.2.2 結構體類型的變量、數組和指針
變量的定義
14.2.3 結構體變量、數組初始化
14.2.4 引用結構體變量中的數據
14.2.5 函數之間結構體變量的數據傳遞
14.2.6 利用結構體變量構成鏈錶
14.3 共用體
14.3.1 共用體類型的定義
14.3.2 共用體變量的引用
課後習題
第 15章 位運算
15.1 位運算符
15.2 位運算符的運算功能
課後習題
第 16章 文件
16.1 C語言文件的概念
16.2 文件指針
16.3 文件打開
16.4 文件關閉
16.5 調用fgetc()和fputc()進行輸入和
輸齣
16.6 判斷文件結束函數feof
16.7 fscanf()函數和fprint()函數
16.8 fgets()函數和fputs()函數
16.9 fread()函數和fwrite()函數
16.10 文件定位函數
課後習題
附錄
附錄A全國計算機等級考試二級C語言
考試大綱(2013年版)
附錄B課後習題參考答案
第1章程序設計基礎 全國計算機等級考試教程——二級C語言程序設計
精彩書摘
C語言是一種當前應用廣泛的通用計算機編程語言,是一種程序設計的工具。它的主要特點是語言簡潔、使用方便靈活、運算符豐富、錶達能力強、可進行結構化程序設計、可以直接操作計算機硬件、可移植性好、生成目標代碼效率高等。在學習C語言之前,我們先瞭解一些關於程序和程序設計的知識。
1.1 程序設計的基本概念
當今時代計算機技術飛速發展,計算機已經廣泛應用於社會生活的各個領域,稱為大眾化的現代工具。但是不熟悉計算機的人會認為它很神秘,其實,計算機不過是一種具有內部存儲能力、由程序自動控製的電子設備。一個完整的計算機係統由硬件係統和軟件係統兩大部分組成。如果把一颱計算機比作人,那麼硬件相當於人的肢體,軟件相當於人的思想、精神。如果人沒有思想,充其量也隻是一個“植物人”,同理,計算機沒有軟件,就如同一堆廢鐵,毫無用處。所以軟件對計算機是很重要的, C語言就是用來編寫計算機軟件的工具。
1.1.1 C語言和運行環境
我們先瞭解一下關於程序設計語言的發展過程,按照程序語言的發展史來劃分,程序設計語言可以分為3個發展階段:機器語言、匯編語言和高級語言,C語言屬於高級語言。
機器語言是直接麵嚮機器的語言,所有語句都是由二進製0、1代碼指令構成,優點是計算機可以直接執行,效率高;缺點是機器語言程序難寫、難修改、難維護,編程效率低。
匯編語言是機器指令的符號化,即用符號來代替二進製代碼指令,與機器語言相比,匯編語言更接近人類的自然語言,優點也是效率較高,但是同樣難學、難用、難維護。
高級語言之所以稱為高級語言,是因為高級語言的語句和人類的自然語句比較接近,越接近人類自然語言就越高級。C語言屬於高級語言的一種, 語句和英語比較接近。在C語言中除瞭一些語言關鍵字之外,還包含大量的數學運算符號,也可以稱C語言為數學語言。
為瞭更好地學習C語言,我們首先需要掌握如何編譯運行一個C語言源程序。一個C語言源程序編寫好瞭,並不能馬上就控製計算機工作,前麵我們提到過,計算機可直接運行的是二進製代碼,即機器語言,所以必須對C語言的源程序(文件後綴名為.c)進行編譯,生成能被計算機處理的二進製代碼文件的目標文件(後綴名為.obj)。編譯通過之後,還需要對二進製代碼的目標文件和其他相關的係統函數進行鏈接,構成可執行文件(Windows操作係統下文件後綴名為.exe),這樣纔能被計算機執行
……
前言/序言
C語言程序設計從入門到精通:掌握核心技能,迎接計算時代 一、 為什麼選擇C語言? 在日新月異的信息技術浪潮中,C語言依然占據著舉足輕重的地位。作為一種高效、靈活且功能強大的編程語言,C語言以其接近硬件的特性,成為瞭操作係統、嵌入式係統、高性能計算、遊戲開發等眾多關鍵領域的基礎。掌握C語言,不僅是開啓編程之旅的堅實一步,更是深入理解計算機工作原理、解決復雜工程問題的必備利器。無論你是初涉編程的新手,還是希望深化技術功底的在校學生、職場人士,抑或是對計算機科學充滿好奇的學習者,本書都將是你探索C語言世界的最佳嚮導。 二、 本書亮點概覽:係統、深入、實戰 本書並非一本枯燥的語法羅列手冊,而是一套經過精心設計、循序漸進的學習體係。我們緻力於幫助讀者建立起紮實的C語言理論基礎,並能熟練運用所學知識解決實際問題。 1. 體係化知識構建: 我們將C語言的知識點按照邏輯關係和學習難度進行嚴謹的組織。從最基礎的程序結構、數據類型、運算符,逐步深入到流程控製、函數、數組、指針,再到結構體、文件操作、預處理命令等核心概念。每一章節都承接上一章節的內容,確保學習的連貫性和深度。 2. 清晰易懂的講解: 復雜的技術概念,在我們這裏將被化繁為簡。我們摒棄晦澀難懂的術語,采用通俗易懂的語言,輔以大量的比喻和類比,幫助初學者快速理解抽象的概念。每一個知識點都配有詳實的文字解釋,力求讓每一個讀者都能“看得懂”。 3. 豐富的示例代碼: 理論的學習離不開實踐的檢驗。本書提供瞭海量、高質量的示例代碼,覆蓋瞭各個知識點。這些代碼不僅是概念的直觀體現,更是學習者動手實踐的起點。我們鼓勵讀者模仿、修改、運行這些代碼,從中體會編程的樂趣,掌握代碼的編寫技巧。 4. 詳盡的習題與練習: 為瞭鞏固學習效果,本書在每章結束後都精心設計瞭不同難度和類型的習題。這些習題涵蓋瞭概念理解、代碼編寫、問題分析等多個層麵,能夠幫助讀者檢驗自己的掌握程度,發現薄弱環節,並提供有針對性的練習機會。 5. 深入的原理剖析: 我們不僅僅停留在“如何做”,更注重“為什麼”。對於一些關鍵的概念,例如指針的本質、內存管理、函數調用機製等,本書都會進行深入的原理剖析,幫助讀者理解C語言的底層運作方式,從而寫齣更健壯、更高效的代碼。 6. 實戰項目導嚮: 學習編程的最終目的是解決實際問題。本書在知識講解過程中,穿插瞭多個小型實戰項目,例如計算器、簡單的文本編輯器、學生管理係統等。通過完成這些項目,讀者能夠將所學知識融會貫通,體驗完整的開發流程,培養解決實際問題的能力。 三、 學習路徑與內容深度解析 本書的學習內容被劃分為以下幾個階段,旨在引導讀者逐步攀登C語言的知識高峰: 第一部分: C語言的基石——初識程序世界 第一章 C語言概述: 介紹C語言的曆史、特點、應用領域,以及如何搭建開發環境,讓你對C語言有一個宏觀的認識,並能成功編寫並運行你的第一個“Hello, World!”程序。 第二章 數據類型與變量: 深入講解C語言提供的各種基本數據類型(整型、浮點型、字符型等),理解變量的聲明、初始化和使用,學習常量和標識符的規則,為後續的程序設計打下堅實基礎。 第三章 運算符與錶達式: 掌握算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符等,理解運算符的優先級和結閤性,學習如何構建復雜的錶達式,實現數據的運算與邏輯判斷。 第二部分: 程序控製的脈絡——流程與分支 第四章 順序結構與分支結構: 學習`if`、`else if`、`else`語句,掌握多路分支的選擇,理解`switch`語句的用法,實現程序根據不同條件執行不同分支邏輯。 第五章 循環結構: 深入掌握`while`、`do-while`、`for`循環,學習如何使用`break`和`continue`控製循環流程,實現重復性任務的自動化處理,並瞭解循環嵌套的應用。 第三部分: 構建模塊化程序——函數與數組 第六章 函數: 理解函數的定義、聲明、調用,學習參數傳遞(值傳遞和引用傳遞),掌握函數的返迴值,瞭解函數的作用域和生命周期,學習遞歸函數的概念和應用,這是構建大型程序的關鍵。 第七章 數組: 學習一維數組和多維數組的聲明、初始化和訪問,掌握數組與循環的結閤應用,理解數組在存儲批量數據時的重要作用,並學習如何通過數組實現數據的排序、查找等基本操作。 第四部分: C語言的靈魂——指針與內存 第八章 指針: 這是C語言學習中最具挑戰但也最核心的部分。我們將詳細講解指針變量的聲明、賦值、解引用,理解指針與數組、字符串的關係,學習指針運算,以及如何使用指針訪問和修改內存。 第九章 指針進階與動態內存分配: 進一步探討指針數組、指嚮指針的指針、函數指針等高級概念。學習`malloc`、`calloc`、`realloc`、`free`等動態內存管理函數,理解內存的申請與釋放,掌握動態數據結構的設計基礎。 第五部分: 復雜數據結構與數據處理 第十章 結構體與共用體: 學習如何定義和使用結構體,將不同類型的數據組閤成一個整體,理解結構體變量的訪問。掌握共用體的概念及其應用場景。 第十一章 字符串處理: 深入學習C語言字符串的特點,掌握常用的字符串處理函數(如`strcpy`、`strcat`、`strlen`、`strcmp`等),學習如何進行字符串的輸入、輸齣、查找和替換。 第十二章 文件操作: 學習文件的打開、關閉、讀寫操作,掌握文本文件和二進製文件的處理方法,學習緩衝文件係統和非緩衝文件係統,實現數據的持久化存儲與讀取。 第六部分: 進階話題與實踐 第十三章 預處理命令: 瞭解`include`、`define`、`ifdef`等預處理命令的作用,學習宏定義、條件編譯等技術,提升代碼的靈活性和可維護性。 第十四章 位運算與進製: 深入理解二進製、十進製、十六進製之間的轉換,掌握位運算符的應用,瞭解其在底層編程、數據加密等領域的用途。 第十五章 綜閤實戰案例: 通過一個或多個貫穿全書的綜閤性項目,例如一個簡單的圖書管理係統或通訊錄管理係統,整閤前麵學習的各項知識點,讓讀者在實踐中全麵提升編程能力。 四、 誰適閤閱讀本書? 零基礎初學者: 如果你對編程一無所知,渴望學習一門強大且實用的語言,本書將為你提供最清晰、最穩健的學習路徑。 計算機專業學生: 作為計算機科學、軟件工程等專業的學生,C語言是必修課程。本書的內容深度和廣度將幫助你係統掌握C語言,為後續更高級的課程奠定基礎。 希望提升技術能力的技術人員: 即使你已經掌握瞭其他編程語言,深入理解C語言也能幫助你更好地理解計算機底層原理,提升解決復雜問題的能力。 嵌入式開發愛好者: C語言在嵌入式領域應用廣泛,本書為你提供瞭進入該領域所需的語言基礎。 準備參加各類計算機等級考試的學習者: 本書的內容設計緊密貼閤考試大綱,是備考二級C語言程序的理想教材。 五、 學習建議 1. 動手實踐是關鍵: 閱讀代碼、理解概念固然重要,但更重要的是親自動手編寫、運行、調試代碼。書中提供的每一個示例,每一個練習,都請務必獨立完成。 2. 勤於思考與提問: 在學習過程中,遇到不理解的地方,不要輕易放過。多思考,多查閱資料,如果仍然睏惑,請大膽嚮老師、同學或在綫社區提問。 3. 循序漸進,打牢基礎: C語言的知識點之間聯係緊密,特彆是指針部分,需要建立在紮實的基礎之上。切勿跳躍式學習,務必確保理解透徹每一個概念。 4. 養成良好的編程習慣: 注意代碼的清晰度、可讀性,編寫注釋,進行良好的變量命名,這些習慣將為你未來的編程生涯帶來巨大的益處。 5. 拓展學習資源: 除瞭本書,還可以參考其他優秀的C語言書籍、在綫教程、編程社區,多方學習,開闊視野。 結語 掌握C語言,就是掌握一門與計算機深度對話的語言。它為你打開瞭通往更廣闊計算世界的大門。本書希望成為你在這條學習道路上最可靠的夥伴,引導你從零開始,逐步精通,最終能夠自信地運用C語言解決現實世界中的各種挑戰。讓我們一起開啓這段精彩的C語言探索之旅吧!