出版時間:2013-5 出版社:機(jī)械工業(yè)出版社
作者簡介
尹寶林,北京航空航天大學(xué)計算機(jī)系教授、博士生導(dǎo)師。全國信息學(xué)奧林匹克科學(xué)委員會副主席。從事計算機(jī)專業(yè)教學(xué)和科研工作多年,曾主講“C語言程序設(shè)計”、“高級語言程序設(shè)計”、“UNIX程序設(shè)計環(huán)境”、“計算機(jī)圖形學(xué)”、“圖像處理”等課程,其中“高級語言程序設(shè)計”被評為北京市精品課程。
書籍目錄
作者自序 教學(xué)建議 例題索引 第0章引言 第1章C程序的創(chuàng)建及其基本結(jié)構(gòu) 1.1C程序的創(chuàng)建過程 1.2C程序的基本組成 1.3調(diào)試初步——語法錯誤的定位 1.4數(shù)據(jù)的輸入/輸出和標(biāo)準(zhǔn)文件 習(xí)題 第2章常量、變量和表達(dá)式 2.1常量 2.1.1數(shù)字常量 2.1.2字符常量 2.1.3字符串字面量 2.2變量 2.2.1變量名和變量類型 2.2.2變量的賦值和類型轉(zhuǎn)換 2.2.3變量的初始化 2.2.4類型限定符const 2.3算術(shù)表達(dá)式 2.3.1算術(shù)運(yùn)算符 2.3.2增量和減量運(yùn)算符 2.3.3位運(yùn)算 2.3.4復(fù)合賦值運(yùn)算符 2.4強(qiáng)制類型轉(zhuǎn)換 2.5數(shù)據(jù)輸出/輸入函數(shù)printf()和scanf() 2.5.1數(shù)值的輸出函數(shù)printf 2.5.2數(shù)值的輸入函數(shù)scanf 2.6常量的符號表示方法 2.6.1常量宏 2.6.2枚舉常量 習(xí)題 第3章條件語句和開關(guān)語句 3.1關(guān)系運(yùn)算符和邏輯運(yùn)算符 3.2運(yùn)算符的優(yōu)先級 3.3從實際問題中的條件到邏輯表達(dá)式 3.4條件語句 3.4.1條件語句中的條件 3.4.2復(fù)合語句 3.4.3條件語句的嵌套和級聯(lián) 3.4.4使用條件語句時的注意事項 3.4.5條件運(yùn)算符和條件表達(dá)式 3.5switch語句 習(xí)題 第4章循環(huán)語句和goto語句 4.1while語句 4.2for語句 4.3dowhile語句 4.4循環(huán)語句的選擇和使用 4.5逗號表達(dá)式 4.6循環(huán)語句的嵌套 4.7循環(huán)語句中的非常規(guī)控制 4.8goto語句 習(xí)題 第5章函數(shù) 5.1函數(shù)的基本概念 5.2函數(shù)的調(diào)用 5.3函數(shù)的結(jié)構(gòu) 5.4函數(shù)的定義 5.5函數(shù)的調(diào)用關(guān)系和返回值 5.6局部變量和全局變量 5.6.1局部變量 5.6.2全局變量 5.6.3對全局變量的訪問 5.7函數(shù)參數(shù)的傳遞 5.8標(biāo)準(zhǔn)庫函數(shù) 5.8.1常用的頭文件 5.8.2常用的數(shù)據(jù)輸入/輸出函數(shù) 5.8.3字符類型判斷函數(shù) 5.8.4字符串處理函數(shù) 5.8.5其他常用函數(shù) 5.9遞歸初步 習(xí)題 第6章數(shù)組 6.1一維數(shù)組 6.1.1一維數(shù)組的定義和初始化 6.1.2一維數(shù)組元素的使用 6.1.3數(shù)組的復(fù)制 6.1.4作為函數(shù)參數(shù)的一維數(shù)組 6.1.5數(shù)組元素的排序和查找 6.2使用一維數(shù)組的常用數(shù)據(jù)結(jié)構(gòu) 6.2.1散列表 6.2.2棧 6.2.3隊 6.3字符串和字符數(shù)組 6.3.1字符串 6.3.2字符數(shù)組 6.4常用的標(biāo)準(zhǔn)字符串函數(shù) 6.4.1字符串輸出函數(shù) 6.4.2字符串輸入函數(shù) 6.4.3字符串復(fù)制和追加函數(shù) 6.4.4字符串比較函數(shù) 6.4.5字符串檢查函數(shù) 6.4.6字符串掃描函數(shù)sscanf() 6.5二維數(shù)組 6.5.1二維數(shù)組的定義 6.5.2二維數(shù)組元素的引用 6.5.3二維數(shù)組元素的遍歷 6.5.4二維數(shù)組元素的排列方式 6.5.5作為參數(shù)的二維數(shù)組 習(xí)題 第7章指針初步 7.1地址與指針 7.2指針變量 7.2.1指針變量的定義和賦值 7.2.2通過指針訪問數(shù)據(jù) 7.2.3作為函數(shù)參數(shù)的指針 7.2.4返回指針的函數(shù) 7.3指針運(yùn)算 7.3.1指針與整數(shù)的加減 7.3.2指針相減 7.3.3指針的比較 7.3.4指針的強(qiáng)制類型轉(zhuǎn)換和void* 7.3.5不合法的指針運(yùn)算 7.3.6指針類型與數(shù)組類型的差異 7.4指針與數(shù)組 7.5指向二維數(shù)組的指針 7.6多重指針 7.7指針數(shù)組 7.7.1一維指針數(shù)組 7.7.2命令行參數(shù) 7.8函數(shù)指針 7.8.1函數(shù)指針變量的定義 7.8.2具有函數(shù)指針參數(shù)的庫函數(shù) 習(xí)題 第8章程序設(shè)計的基本方法 8.1程序設(shè)計的基本過程 8.2問題分析 8.2.1程序功能和輸入/輸出數(shù)據(jù) 8.2.2對程序性能的要求 8.2.3程序中的錯誤處理 8.2.4程序的測試 8.2.5問題分析的結(jié)果 8.3方案設(shè)計 8.3.1解題思路 8.3.2算法的描述 8.3.3數(shù)據(jù)結(jié)構(gòu)和算法的選擇 8.4編碼:從算法到代碼 8.4.1代碼的結(jié)構(gòu) 8.4.2代碼的檢查 8.4.3代碼中的注釋 8.5程序的調(diào)試 8.5.1調(diào)試的基本方法 8.5.2調(diào)試工具的基本功能和使用 8.5.3標(biāo)準(zhǔn)輸入/輸出的重新定向 習(xí)題 第9章結(jié)構(gòu)和聯(lián)合 9.1結(jié)構(gòu)(struct) 9.1.1結(jié)構(gòu)類型的定義 9.1.2結(jié)構(gòu)成員的訪問 9.1.3包含結(jié)構(gòu)的結(jié)構(gòu) 9.2聯(lián)合(union) 9.2.1聯(lián)合類型的定義 9.2.2聯(lián)合成員的訪問 9.3類型定義(typedef)語句 9.4復(fù)雜類型的解讀 習(xí)題 第10章輸入/輸出和文件 10.1輸入/輸出的基本過程和文件類型 10.2文件的打開、創(chuàng)建和關(guān)閉 10.3文件數(shù)據(jù)的正文格式讀寫 10.4讀寫操作中的定位 10.5文件數(shù)據(jù)的二進(jìn)制格式讀寫 習(xí)題 附錄A不同版本的C語言標(biāo)準(zhǔn)之間的主要區(qū)別 附錄Bvi/vim的常用命令 附錄C使用MSVC++6.0IDE創(chuàng)建C程序的基本過程 附錄Dcc/gcc的常用命令行選項 附錄E常用的標(biāo)準(zhǔn)庫函數(shù)名及其頭文件 附錄FASCII編碼 附錄G調(diào)試工具GDB的常用命令 參考文獻(xiàn)和推薦書目
章節(jié)摘錄
版權(quán)頁: [例2—7]時鐘指針普通時鐘的時針和分針的夾角隨時間而變化。從標(biāo)準(zhǔn)輸入讀入一個24小時制的時間,其格式為“h:m”,其中h(0≤h≤23)表示小時,m(0≤m≤59)表示分鐘,均為整數(shù)。求該時刻時針和分針的夾角A(0≤A≤180)。在標(biāo)準(zhǔn)輸出上輸出結(jié)果,保留3位小數(shù)。例如,當(dāng)輸人為8:10時,輸出175.000。 求解這道題目的基本思想是,首先根據(jù)給定的時間分別計算出時針和分針相對于某一參考方向的角度,然后再將兩個角度相減,計算出兩個指針之間的夾角。為方便起見,我們以表盤上12點的方向為起點順時針計算各個指針的角度。因為分針每分鐘轉(zhuǎn)動6度,所以使用分鐘數(shù)乘以6就是分針的角度。時針每小時轉(zhuǎn)動30度,每分鐘轉(zhuǎn)動0.5度,因此以時數(shù)乘以30再加上分鐘數(shù)乘以0.5就是時針的角度。但是,使用這樣算出的指針角度相減得到的結(jié)果可能不符合要求。首先,題目中給出的小時的范圍是0~23,以上述方法算出的時針的角度在0~720度之間,有可能超過一個圓周角。其次,由于兩個指針的相對位置不固定,兩個角度相減的結(jié)果可能為正,也可能為負(fù);即使結(jié)果為正,也不一定在0~180度的范圍內(nèi)。為解決這兩個問題,需要在計算過程中進(jìn)行一系列的變換,以便使最終結(jié)果符合題目的要求: 1)將小時數(shù)從區(qū)間[0,23]映射到區(qū)間[0,11],以便使時針的角度在0~360度之間。例如,將15點轉(zhuǎn)換為3點。 2)將結(jié)果為負(fù)數(shù)的夾角角度轉(zhuǎn)換為正數(shù)。例如,將一30度轉(zhuǎn)換為30度。 3)將大于180度的夾角角度轉(zhuǎn)換為小于180度的角度。例如,將185度轉(zhuǎn)換為175度。 所有上述變換,都需要根據(jù)給定的數(shù)據(jù)或計算結(jié)果所處的不同區(qū)間進(jìn)行不同的處理: 1)當(dāng)小時數(shù)處于區(qū)間[12,23]時,從中減去12。 2)對于負(fù)數(shù)的夾角角度a,取—a。 3)對大于180度的夾角角度a,取360—a。 為實現(xiàn)上述這些變換,最容易想到的方法就是使用條件語句,根據(jù)相關(guān)數(shù)據(jù)所在的區(qū)間分別執(zhí)行不同的操作。例如,將區(qū)間[0,360)中的角度映射到區(qū)間[0,180)的方法是對位于區(qū)間[0,180)中的角度不做任何處理,而對位于區(qū)間[180,360)中的角度,則用360減去該角度。我們到目前為止還沒有學(xué)習(xí)條件語句,因此這種方法暫時還不可用。我們可以換另一種方法,在不使用條件語句的情況下,利用剛剛學(xué)過的算術(shù)運(yùn)算和強(qiáng)制類型轉(zhuǎn)換完成所需的數(shù)據(jù)變換。 將24小時制下的小時轉(zhuǎn)換為12小時制下的時問的方法是直接將小時數(shù)模12。這樣,就不必判斷小時數(shù)的具體數(shù)值了。根據(jù)轉(zhuǎn)換后的小時數(shù)計算出的時針的角度必然位于區(qū)間[0,360)中。
編輯推薦
《C程序設(shè)計導(dǎo)引》特別適合作為計算機(jī)和非計算機(jī)專業(yè)學(xué)生學(xué)習(xí)高級語言程序設(shè)計的教材,也可供計算機(jī)等級考試者和其他各類學(xué)習(xí)者使用參考。
圖書封面
評論、評分、閱讀與下載