跨平台的C語言程式設計

跨平台的C語言程式設計

《跨平台的C語言程式設計》是2016年清華大學出版社出版的圖書,作者是潘勇、趙毅、黃容。

圖書簡介

本書是學習C語言程式設計的基礎教程,內容包括C語言概述、C語言常用編程環境、順序結構程式設計、分支結構程式設計、循環結構程式設計、數組、函式、指針、結構體、檔案等。

本書以程式設計思想的掌握為主線,以編程套用為驅動,通過案例和問題引入內容,由淺入深,循序漸進,重點訓練學生的編程思想,能夠充分提高學生的編程能力,鍛鍊學生的工程能力和創新能力,並鼓勵學生利用所學C語言知識解決專業的具體問題。

本書是為“卓越工程師教育培養計畫”本科專業編寫的計算機教材,強化編程能力、工程能力和創新能力;也可以作為其他套用型本科理工類專業的計算機套用教材。

前言

C語言由於其卓越的優點,在國內外得到了廣泛的套用,幾乎所有的理工科大學都開設了“C語言程式設計”這門公共基礎課。通過學習這門課程,使學生掌握程式設計的基本方法並逐步形成正確的程式設計思想,能夠使用C語言進行程式設計並具備調試程式的能力,為後繼課程及其他程式設計課程的學習和套用打下基礎。

在多年非計算機專業的計算機系列課程教學工作中,我們深切地感到多數學習者總停留在“學會C語言的基本語法、理論,編寫簡單的C語言程式,通過書面考試”的水平上;並且,雖然目前介紹C語言的教材很多,但大多是圍繞程式語言本身的體系展開內容,以講解語言知識為主,特別是語法知識,輔以一些編程技巧的介紹,不利於培養學生的程式設計能力和語言套用能力。

作為首批“卓越工程師教育培養計畫”試點的本科專業,要求培養具備大學本科基礎知識,並有一定的實踐能力與套用能力的高級技術人才,強化工程能力和創新能力。“卓越工程師教育培養計畫”旨在培養掌握實際操作技能、能為企業創造更多實際價值的人才。因此,C語言程式設計課程的教學重點應該是培養學生的實際編程能力,教材也要以程式設計為中心來組織內容,學習者必須通過大量的編程訓練,在實踐中掌握語法知識,培養程式設計的基本能力,並逐步理解和掌握程式設計的思想和方法。

在深入研究了卓越工程師的培養要求的基礎上,結合多年來套用型本科人才培養的經驗,我們深切體會到了重新編寫一本適合“卓越計畫試點專業”教材的必要性和迫切性。本書以程式設計思想的掌握為主線,以編程套用為驅動,通過案例和問題引入內容,由淺入深,重點訓練學生的編程思想,提高學生套用C語言的能力。

本教材與同類教材相比,具有以下特點。

(1)一本適合卓越計畫試點專業的C語言程式設計教材。根據卓越計畫試點專業的培養要求和計畫,C語言程式設計課程課時為48至64學時,所以,本教材為重套用的少學時教材,需要分清重點、難點。本書將順序、選擇、循環三種結構,一維數組、函式、指針作為重點內容;簡單介紹用戶自定義類型、宏定義、檔案和語法,其他如有需要可參考其他書籍。本書強調實踐編程能力,重套用、輕語法。

(2)以實用技能為核心。卓越工程師的重中之重,是要具備實際工程技能和創新能力。因此,本書不是一本介紹語法的書,而是幫助讀者通過大量實例了解怎么設計和運用算法,怎樣用語言工具和編程環境去實現編程,從而處理實際問題。在教材編寫上,不求語法面面俱到,而是結合企業需求,以實用技能為核心,重點講解在實際編程中經常使用的一些核心技術,對於其他語法內容則少講或不講,需要的可以參考附錄或者其他參考書。

(3)以案例為主線。與傳統的教材編排方式不同,在基本遵循C語言教學體系的情況下,本書將所有教學內容用例題組織。即根據要介紹的內容精心編寫相應的例題,將大量的、正確的、規範的程式介紹給學生,在講解例題的過程中,使學生學習語法、了解概念、掌握算法。

(4)以實踐能力為突破點。按傳統教材的教學方式,很多學生C語言語法學得很好,但卻不會自己編程。而在本書的結構設計上,強調實踐和動手能力,使學生從第一堂課起就練習編程,並貫穿始終:從模仿程式,到改寫程式,最後自己編寫程式。在整個教材編寫和教學過程中,都要求學生“動手、動手、再動手”,要讓學生敢於編程、樂於編程、大量編程,不要把學習重點放在語法規則上,而是要提高動手能力,積累實際的編程經驗。

(5)多形式分層次的練習題目。為了鼓勵學生多思考、多練習、多動手,提高學生的學習效果,本書各章節都配有大量的例題解析和習題。多種形式的習題從多角度檢驗知識的掌握程度:選擇題檢驗C語言語法基礎知識的掌握程度;編程題檢驗學生動手編程的能力。為了滿足不同層次學生的學習需要,編程題也層次多樣:有些題目難度較低,學生根據本章節講解的知識點就可以輕鬆完成;有些題目難度加大,要求學生認真思考、調試才能完成;還有些題目難度更大,一般為綜合運用題,不止檢驗一兩個知識點,要求學生綜合所學的知識,從多個知識點和角度考慮,是對學有餘力的學生提出的思考題,能夠充分提高學生的編程能力,鍛鍊學生的工程能力和創新能力,鼓勵學生利用所學C語言知識解決專業的具體問題。

(6)提供了跨平台的Dev -C++的編程環境。目前絕大多數的教材,程式調試都是在TurboC或者VisualC++6.0環境下編譯執行的,但現在流行的Windows7系統跟VisualC++6.0環境不兼容,有的安裝不成功,有的程式執行會隨機出錯。因此,本書特別增加了“C語言常用編程環境”一章,介紹了經典的VisualC++6.0編程環境和跨平台的Dev-C++編程環境,既滿足等級考試的需要,也滿足學生自主學習的需要。

全書共12章,主要包括:算法及結構化程式設計思想,基本數據類型及常用輸入輸出函式,三種基本結構(順序、選擇、循環)、函式、數組、指針、自定義數據類型及其程式設計,檔案的存取等。第1章介紹C語言的特點和實現過程;第2章介紹了經典的VisualC++6.0編程環境和跨平台的Dev-C++編程環境;第3章從實例出發,簡單介紹順序、分支和循環三種控制結構的初步使用,以及在實例程式中用到的語法知識;第4章講解分支結構程式設計的思路和方法;第5章講解循環結構程式設計的思路和方法;第6章介紹數據類型等一些語法知識;第7章講解數組的用法;第8章講解函式定義與調用;第9章講解指針的用法;第10章講解自定義的數據類型及其用法;第11章講解宏定義、檔案包含與條件編譯的用法;第12章講解檔案的操作。為了與程式語言相一致,本書公式中所有字母符號均採用正體。

本書由潘勇、趙毅、黃容共同編寫,潘勇、趙毅擔任主編並統稿。陳強教授、王明衍教授以及教研室多位同事對本書的初稿進行了審閱,上海工程技術大學電子電氣工程學院的領導和專家也對本書悉心指導並提出了許多寶貴的修改意見。此外,本書的編寫還得到了各級領導和出版社編輯的關心和支持,在此一併表示感謝!

由於編者水平有限,書中難免有不妥之處,衷心希望得到廣大讀者的批評指正。

編者2016年1月

目錄

第1章C語言概述

1.1一個C語言程式

1.2電腦程式設計與程式設計語言

1.2.1程式與指令

1.2.2程式設計語言

1.3C語言的發展與套用現狀

1.4C語言的特點

1.4.1C語言的優勢

1.4.2如何學習C語言程式設計

1.4.3C語言的語法特點

1.4.4C語言的結構特點

1.4.5C語言的編譯與編程環境

習題

第2章C語言常用編程環境

2.1經典的VisualC++6.0編程環境

2.1.1VisualC++6.0概述

2.1.2使用VisualC++6.0建立C語言應用程式

2.2開源的DevC++

習題

第3章用C語言編寫簡單程式

3.1在螢幕上顯示自定義文字“HelloWorld!”

3.1.1程式解析

3.1.2程式的三種結構

3.2攝氏溫度與華氏溫度換算(簡單的順序結構程式的編寫)

3.2.1程式解析

3.2.2常量、變數和數據類型

3.2.3賦值運算和算術運算

3.2.4格式化輸出函式printf

3.3判斷一元二次方程是否有實數解(簡單的分支結構程式的編寫)

3.3.1程式解析

3.3.2關係運算

3.3.3if…else二分支語句

3.3.4格式化輸入函式scanf

3.4計算自由落體反彈高度和總距離(簡單的循環結構程式

——for語句的編寫)

3.4.1指定次數的循環程式設計

3.4.2for語句

3.4.3計算自由落體反彈高度和總距離

3.4.4程式解析

習題

第4章分支結構程式設計

4.1從鍵盤輸入一個控制命令字元,判斷輸入是否正確

4.1.1程式解析

4.1.2字元類型

4.1.3邏輯運算符和邏輯表達式

4.1.4字元型數據的輸入和輸出

4.2分支結構程式設計——求解一元二次方程

4.2.1程式解析

4.2.2if語句的三種形式

4.2.3if語句的嵌套

4.3模擬工程控制,根據指令進行相應的操作

4.3.1程式解析

4.3.2switch語句

習題

第5章循環結構程式設計

5.1輸入一批學生的成績,統計平均分

5.1.1程式解析

5.1.2while語句

5.1.3數列問題求解

5.2用牛頓疊代法求方程2x3-4x2+3x-6=0的根

5.2.1程式解析

5.2.2do…while語句

5.2.3循環語句的選擇

5.3列印九九乘法表

5.3.1程式解析

5.3.2循環的嵌套

5.4求素數

5.4.1程式解析

5.4.2用break語句和continue語句改變循環狀態

5.5複雜循環結構程式設計

5.5.1傅立葉級數逼近

5.5.2數據處理與回歸分析

習題

第6章C語言的數據類型和表達式

6.1C語言的基本數據類型

6.2常量和變數

6.2.1常量

6.2.2變數

6.3運算符和表達式

6.3.1算術運算符和算術表達式

6.3.2強制類型轉換運算符

6.3.3自增、自減運算符

6.3.4賦值運算符和賦值表達式

6.3.5關係運算符和表達式

6.3.6邏輯運算符和表達式

6.3.7條件表達式

6.3.8逗號表達式

6.4綜合程式設計案例

6.5算法與程式設計

習題

第7章數組

7.1排序問題

7.1.1程式解析

7.1.2一維數組的定義和引用

7.1.3一維數組的初始化

7.1.4使用一維數組編程

7.2找出矩陣中最大值所在的位置

7.2.1程式解析

7.2.2二維數組的定義和引用

7.2.3二維數組的初始化

7.3數據通信過程中的信息加密問題

7.3.1程式解析

7.3.2一維字元數組

7.3.3字元串處理

習題

第8章函式

8.1用函式求幾何圖形的面積

8.1.1程式解析

8.1.2函式的定義

8.1.3函式的聲明

8.1.4函式的調用

8.2用函式求Fibonacci數列

8.2.1程式解析

8.2.2形式參數與實際參數

8.2.3函式的返回值

8.2.4值傳遞與地址傳遞

8.3變數與函式

8.3.1局部變數和全局變數

8.3.2變數的存儲類別

8.3.3函式的遞歸調用——求n!

習題

第9章指針及其套用

9.1替代用變數名引用數據的新方法

9.1.1指針概念的引入

9.1.2定義指針變數

9.1.3指針與變數的關係

9.1.4為指針變數賦值及指針變數的初始化

9.1.5利用指針變數進行數據處理

9.2指針和一維數組

9.3利用被調函式對主調函式中的數組元素進行冒泡排序

9.3.1指針變數作為函式參數

9.3.2數組名作為函式的參數

9.4字元串和字元指針

9.4.1字元串常量的值

9.4.2使用字元指針處理字元串的程式舉例

習題

第10章結構體、共用體和枚舉類型

10.1按價格排序輸出一組待售汽車的信息

10.1.1程式解析

10.1.2結構體類型的概念和定義

10.1.3結構體類型變數的定義

10.1.4結構體類型變數的使用

10.1.5結構體變數作為函式參數

10.2編寫一個書籍管理程式,顯示所有書籍信息

10.2.1程式解析

10.2.2結構體數組

10.2.3結構體數組的套用實例

10.3共用體——每個時刻只能有一個成員占用記憶體的“結構體”

10.3.1程式解析

10.3.2共用體類型的定義

10.3.3共用體變數的定義

10.3.4共用體變數的引用

10.4讓變數的取值局限於特定範圍

10.4.1枚舉類型的定義

10.4.2枚舉變數的定義

10.4.3枚舉類型的套用

10.5隨心所欲地安排數據類型名——typedef的使用方法

10.5.1利用typedef定義類型名

10.5.2typedef的典型用法

習題

第11章宏定義與檔案包含

11.1宏定義

11.1.1程式解析

11.1.2無參宏定義

11.1.3帶參宏定義

11.2檔案包含

11.3條件編譯

習題

第12章檔案

12.1將“歡迎卓越工程師”寫入檔案

12.1.1程式解析

12.1.2C檔案概述

12.1.3檔案指針

12.1.4檔案的打開與關閉

12.2檔案的讀寫——讀取工程檔案

12.2.1程式解析——讀取工程檔案

12.2.2字元讀寫函式fgetc和fputc

12.2.3字元串讀寫函式fgets和fputs

12.2.4數據塊讀寫函式fread和fwrite

12.2.5格式化讀寫函式fscanf和fprintf

12.3檔案的隨機讀寫

12.3.1改變檔案位置指針函式fseek()

12.3.2位置指針重返檔案頭函式rewind()

12.3.3位置指針當前值函式ftell()

12.3.4檔案的隨機讀寫

12.4檔案檢測函式

12.4.1檔案結束檢測函式feof函式

12.4.2讀寫檔案出錯檢測函式ferror函式

12.4.3檔案出錯標誌和檔案結束標誌置0函式clearerr函式

習題

附錄AASCII編碼表

附錄BC語言常用的庫函式

附錄CC語言運算符優先權表

參考文獻

相關詞條

熱門詞條

聯絡我們