C程序設(shè)計(jì)導(dǎo)引

出版時(shí)間:2013-5  出版社:機(jī)械工業(yè)出版社  

作者簡(jiǎn)介

尹寶林,北京航空航天大學(xué)計(jì)算機(jī)系教授、博士生導(dǎo)師。全國(guó)信息學(xué)奧林匹克科學(xué)委員會(huì)副主席。從事計(jì)算機(jī)專業(yè)教學(xué)和科研工作多年,曾主講“C語(yǔ)言程序設(shè)計(jì)”、“高級(jí)語(yǔ)言程序設(shè)計(jì)”、“UNIX程序設(shè)計(jì)環(huán)境”、“計(jì)算機(jī)圖形學(xué)”、“圖像處理”等課程,其中“高級(jí)語(yǔ)言程序設(shè)計(jì)”被評(píng)為北京市精品課程。

書籍目錄

作者自序 教學(xué)建議 例題索引 第0章引言 第1章C程序的創(chuàng)建及其基本結(jié)構(gòu) 1.1C程序的創(chuàng)建過(guò)程 1.2C程序的基本組成 1.3調(diào)試初步——語(yǔ)法錯(cuò)誤的定位 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常量的符號(hào)表示方法 2.6.1常量宏 2.6.2枚舉常量 習(xí)題 第3章條件語(yǔ)句和開關(guān)語(yǔ)句 3.1關(guān)系運(yùn)算符和邏輯運(yùn)算符 3.2運(yùn)算符的優(yōu)先級(jí) 3.3從實(shí)際問(wèn)題中的條件到邏輯表達(dá)式 3.4條件語(yǔ)句 3.4.1條件語(yǔ)句中的條件 3.4.2復(fù)合語(yǔ)句 3.4.3條件語(yǔ)句的嵌套和級(jí)聯(lián) 3.4.4使用條件語(yǔ)句時(shí)的注意事項(xiàng) 3.4.5條件運(yùn)算符和條件表達(dá)式 3.5switch語(yǔ)句 習(xí)題 第4章循環(huán)語(yǔ)句和goto語(yǔ)句 4.1while語(yǔ)句 4.2for語(yǔ)句 4.3dowhile語(yǔ)句 4.4循環(huán)語(yǔ)句的選擇和使用 4.5逗號(hào)表達(dá)式 4.6循環(huán)語(yǔ)句的嵌套 4.7循環(huán)語(yǔ)句中的非常規(guī)控制 4.8goto語(yǔ)句 習(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對(duì)全局變量的訪問(wèn) 5.7函數(shù)參數(shù)的傳遞 5.8標(biāo)準(zhǔn)庫(kù)函數(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隊(duì) 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通過(guò)指針訪問(wèn)數(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ù)的庫(kù)函數(shù) 習(xí)題 第8章程序設(shè)計(jì)的基本方法 8.1程序設(shè)計(jì)的基本過(guò)程 8.2問(wèn)題分析 8.2.1程序功能和輸入/輸出數(shù)據(jù) 8.2.2對(duì)程序性能的要求 8.2.3程序中的錯(cuò)誤處理 8.2.4程序的測(cè)試 8.2.5問(wèn)題分析的結(jié)果 8.3方案設(shè)計(jì) 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)成員的訪問(wèn) 9.1.3包含結(jié)構(gòu)的結(jié)構(gòu) 9.2聯(lián)合(union) 9.2.1聯(lián)合類型的定義 9.2.2聯(lián)合成員的訪問(wèn) 9.3類型定義(typedef)語(yǔ)句 9.4復(fù)雜類型的解讀 習(xí)題 第10章輸入/輸出和文件 10.1輸入/輸出的基本過(guò)程和文件類型 10.2文件的打開、創(chuàng)建和關(guān)閉 10.3文件數(shù)據(jù)的正文格式讀寫 10.4讀寫操作中的定位 10.5文件數(shù)據(jù)的二進(jìn)制格式讀寫 習(xí)題 附錄A不同版本的C語(yǔ)言標(biāo)準(zhǔn)之間的主要區(qū)別 附錄Bvi/vim的常用命令 附錄C使用MSVC++6.0IDE創(chuàng)建C程序的基本過(guò)程 附錄Dcc/gcc的常用命令行選項(xiàng) 附錄E常用的標(biāo)準(zhǔn)庫(kù)函數(shù)名及其頭文件 附錄FASCII編碼 附錄G調(diào)試工具GDB的常用命令 參考文獻(xiàn)和推薦書目

章節(jié)摘錄

版權(quán)頁(yè):   [例2—7]時(shí)鐘指針普通時(shí)鐘的時(shí)針和分針的夾角隨時(shí)間而變化。從標(biāo)準(zhǔn)輸入讀入一個(gè)24小時(shí)制的時(shí)間,其格式為“h:m”,其中h(0≤h≤23)表示小時(shí),m(0≤m≤59)表示分鐘,均為整數(shù)。求該時(shí)刻時(shí)針和分針的夾角A(0≤A≤180)。在標(biāo)準(zhǔn)輸出上輸出結(jié)果,保留3位小數(shù)。例如,當(dāng)輸人為8:10時(shí),輸出175.000。 求解這道題目的基本思想是,首先根據(jù)給定的時(shí)間分別計(jì)算出時(shí)針和分針相對(duì)于某一參考方向的角度,然后再將兩個(gè)角度相減,計(jì)算出兩個(gè)指針之間的夾角。為方便起見,我們以表盤上12點(diǎn)的方向?yàn)槠瘘c(diǎn)順時(shí)針計(jì)算各個(gè)指針的角度。因?yàn)榉轴樏糠昼娹D(zhuǎn)動(dòng)6度,所以使用分鐘數(shù)乘以6就是分針的角度。時(shí)針每小時(shí)轉(zhuǎn)動(dòng)30度,每分鐘轉(zhuǎn)動(dòng)0.5度,因此以時(shí)數(shù)乘以30再加上分鐘數(shù)乘以0.5就是時(shí)針的角度。但是,使用這樣算出的指針角度相減得到的結(jié)果可能不符合要求。首先,題目中給出的小時(shí)的范圍是0~23,以上述方法算出的時(shí)針的角度在0~720度之間,有可能超過(guò)一個(gè)圓周角。其次,由于兩個(gè)指針的相對(duì)位置不固定,兩個(gè)角度相減的結(jié)果可能為正,也可能為負(fù);即使結(jié)果為正,也不一定在0~180度的范圍內(nèi)。為解決這兩個(gè)問(wèn)題,需要在計(jì)算過(guò)程中進(jìn)行一系列的變換,以便使最終結(jié)果符合題目的要求: 1)將小時(shí)數(shù)從區(qū)間[0,23]映射到區(qū)間[0,11],以便使時(shí)針的角度在0~360度之間。例如,將15點(diǎn)轉(zhuǎn)換為3點(diǎn)。 2)將結(jié)果為負(fù)數(shù)的夾角角度轉(zhuǎn)換為正數(shù)。例如,將一30度轉(zhuǎn)換為30度。 3)將大于180度的夾角角度轉(zhuǎn)換為小于180度的角度。例如,將185度轉(zhuǎn)換為175度。 所有上述變換,都需要根據(jù)給定的數(shù)據(jù)或計(jì)算結(jié)果所處的不同區(qū)間進(jìn)行不同的處理: 1)當(dāng)小時(shí)數(shù)處于區(qū)間[12,23]時(shí),從中減去12。 2)對(duì)于負(fù)數(shù)的夾角角度a,取—a。 3)對(duì)大于180度的夾角角度a,取360—a。 為實(shí)現(xiàn)上述這些變換,最容易想到的方法就是使用條件語(yǔ)句,根據(jù)相關(guān)數(shù)據(jù)所在的區(qū)間分別執(zhí)行不同的操作。例如,將區(qū)間[0,360)中的角度映射到區(qū)間[0,180)的方法是對(duì)位于區(qū)間[0,180)中的角度不做任何處理,而對(duì)位于區(qū)間[180,360)中的角度,則用360減去該角度。我們到目前為止還沒有學(xué)習(xí)條件語(yǔ)句,因此這種方法暫時(shí)還不可用。我們可以換另一種方法,在不使用條件語(yǔ)句的情況下,利用剛剛學(xué)過(guò)的算術(shù)運(yùn)算和強(qiáng)制類型轉(zhuǎn)換完成所需的數(shù)據(jù)變換。 將24小時(shí)制下的小時(shí)轉(zhuǎn)換為12小時(shí)制下的時(shí)問(wèn)的方法是直接將小時(shí)數(shù)模12。這樣,就不必判斷小時(shí)數(shù)的具體數(shù)值了。根據(jù)轉(zhuǎn)換后的小時(shí)數(shù)計(jì)算出的時(shí)針的角度必然位于區(qū)間[0,360)中。

編輯推薦

《C程序設(shè)計(jì)導(dǎo)引》特別適合作為計(jì)算機(jī)和非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)高級(jí)語(yǔ)言程序設(shè)計(jì)的教材,也可供計(jì)算機(jī)等級(jí)考試者和其他各類學(xué)習(xí)者使用參考。

圖書封面

評(píng)論、評(píng)分、閱讀與下載


    C程序設(shè)計(jì)導(dǎo)引 PDF格式下載


用戶評(píng)論 (總計(jì)0條)

 
 

 

250萬(wàn)本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7