關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
C程序設(shè)計(jì)——基于應(yīng)用導(dǎo)向與任務(wù)驅(qū)動(dòng)的學(xué)習(xí)方法
本書(shū)采用以解決實(shí)際應(yīng)用問(wèn)題為導(dǎo)向、以具體編程任務(wù)為驅(qū)動(dòng)的模式,將C語(yǔ)言的知識(shí)無(wú)縫融入每個(gè)實(shí)際應(yīng)用程序中。作者精心設(shè)計(jì)了100多個(gè)應(yīng)用案例,每個(gè)案例均有實(shí)現(xiàn)特定功能的、完整的、可運(yùn)行的程序代碼。本書(shū)圖表豐富,對(duì)程序設(shè)計(jì)的概念、求解問(wèn)題的思路和方法、程序背后的原理和機(jī)制進(jìn)行了深入剖析。全書(shū)共9章。第1章從簡(jiǎn)單程序入手,將程序設(shè)計(jì)相關(guān)的基礎(chǔ)性概念融入案例,使讀者對(duì)C程序設(shè)計(jì)有一個(gè)整體的、直觀(guān)的、感性的認(rèn)識(shí)。第2章闡述表達(dá)復(fù)雜邏輯的分支和循環(huán)語(yǔ)句的用法,使讀者對(duì)應(yīng)用問(wèn)題中的邏輯具有較好的表達(dá)能力。第3章闡述了利用數(shù)組處理批量數(shù)據(jù)。第4章闡述了如何存儲(chǔ)和處理文本型數(shù)據(jù)。第5章全面地闡述了函數(shù)這一模塊化程序設(shè)計(jì)利器。第6章對(duì)具有內(nèi)存間接訪(fǎng)問(wèn)能力的指針進(jìn)行了深入闡述。第7章講解如何利用結(jié)構(gòu)體類(lèi)型創(chuàng)建用戶(hù)所需新數(shù)據(jù)類(lèi)型。第8章闡述了如何利用文件實(shí)現(xiàn)數(shù)據(jù)持久化。第9章講解了位運(yùn)算的規(guī)則和用法。
本書(shū)采用大量具有實(shí)際生活應(yīng)用背景的實(shí)例系統(tǒng)地、通俗地、透徹地講解了如何運(yùn)用C語(yǔ)言設(shè)計(jì)程序解決實(shí)際問(wèn)題。本書(shū)提出的基于應(yīng)用導(dǎo)向與任務(wù)驅(qū)動(dòng)的學(xué)習(xí)方法是值得推薦的程序設(shè)計(jì)學(xué)習(xí)方法。本書(shū)從形式到內(nèi)容都具有一定創(chuàng)新性。本書(shū)內(nèi)容組織獨(dú)具匠心、敘述方式通俗易懂、編程實(shí)例力求原創(chuàng)、任務(wù)驅(qū)動(dòng)邏輯清晰、代碼注釋別具一格、知識(shí)擴(kuò)展開(kāi)拓思路。
本書(shū)是大學(xué)工科類(lèi)專(zhuān)業(yè)的*門(mén)程序設(shè)計(jì)課程的*教材,也是廣大零基礎(chǔ)學(xué)習(xí)程序設(shè)計(jì)讀者不二之選。
本書(shū)具有六大特色:
1、以應(yīng)用導(dǎo)向,將C語(yǔ)言的知識(shí)融匯貫穿在對(duì)實(shí)際問(wèn)題求解的過(guò)程中,盡量避免單純語(yǔ)法的講解。
2、每個(gè)編程任務(wù)目標(biāo)明確、源于生活、意趣兼?zhèn)。以?shí)際任務(wù)驅(qū)動(dòng)編程,更加生動(dòng)有趣。全書(shū)共150多個(gè)編程實(shí)例,可使用程序設(shè)計(jì)練習(xí)系統(tǒng)在線(xiàn)評(píng)判,方便上機(jī)練習(xí)。
3、本書(shū)大量運(yùn)用圖解、表格、小貼士、小問(wèn)答等形式,運(yùn)用類(lèi)比、對(duì)比等方法,盡量用直觀(guān)的形式幫助讀者理解程序設(shè)計(jì)中相對(duì)抽象的概念、原理、機(jī)制。
4、本書(shū)內(nèi)容深入淺出,表里兼顧,幫助讀者深入地理解程序底層的運(yùn)行機(jī)制和原理。使讀者在編程時(shí)做到知其然且知其所以然。本書(shū)語(yǔ)言通俗、可讀性好、方便自學(xué)又不失深度。
5、程序代碼與相應(yīng)注釋之間用箭頭連接,代碼和注釋?zhuān)荒苛巳,方便閱讀。
6、本書(shū)始終站在程序設(shè)計(jì)者的角度即人的角度,來(lái)講解程序設(shè)計(jì),而不是站在C語(yǔ)言的角度即語(yǔ)法的角度,來(lái)講解程序設(shè)計(jì)。本書(shū)始終以工具(C語(yǔ)言作為程序設(shè)計(jì)的)服務(wù)于目標(biāo)(求解實(shí)際問(wèn)題)視角來(lái)展開(kāi)討論。從這樣的視角出發(fā),讀者更容易理解和接受程序代碼。
前 言當(dāng)您第一眼見(jiàn)到這本書(shū),一定詫異于它的厚度,但只要您翻開(kāi)閱讀,我想,您一定不會(huì)覺(jué)得這是一本難啃的大部頭,而像是一本娓娓道來(lái)的程序設(shè)計(jì)故事書(shū)。 當(dāng)我想要編寫(xiě)一本關(guān)于程序設(shè)計(jì)的教材時(shí),難抑內(nèi)心的激動(dòng)。我的第一門(mén)程序設(shè)計(jì)語(yǔ)言是BASIC,然后學(xué)習(xí)C語(yǔ)言,后來(lái)學(xué)過(guò)C 、Java、Python等程序設(shè)計(jì)語(yǔ)言。多數(shù)學(xué)過(guò)程序設(shè)計(jì)的人,對(duì)第一門(mén)程序設(shè)計(jì)語(yǔ)言的印象大抵是艱難而晦澀的。一些人秉承對(duì)程序設(shè)計(jì)的執(zhí)著和熱愛(ài),從這種艱難中走過(guò)來(lái)了,并且從此愛(ài)上了程序設(shè)計(jì),享受程序設(shè)計(jì)在解決現(xiàn)實(shí)生活的實(shí)際應(yīng)用問(wèn)題后帶來(lái)的快樂(lè)和成就感。但更多的人對(duì)編程望而生畏,面對(duì)堪如天書(shū)的代碼,始終難解心中諸多困惑:這些代碼是如何寫(xiě)出來(lái)的?為什么要寫(xiě)成這樣?必須寫(xiě)成這樣嗎?為什么我這樣寫(xiě)就不對(duì)呢?解決此問(wèn)題還有其他寫(xiě)法嗎?為何當(dāng)我面對(duì)實(shí)際應(yīng)用問(wèn)題時(shí)總感到無(wú)從下手呢?怎樣才能創(chuàng)造出屬于自己的程序呢? 我盡最大努力,使程序設(shè)計(jì)的每個(gè)細(xì)節(jié)變得簡(jiǎn)單清晰。為了讓您理解程序的來(lái)龍去脈,對(duì)于每次需要解決的編程任務(wù),不是一次性地拋出最終程序代碼,而是必須對(duì)解決此問(wèn)題的思路、方法進(jìn)行詳盡分析。并且遵循由簡(jiǎn)單到復(fù)雜,由低級(jí)到高級(jí)的設(shè)計(jì)過(guò)程,盡可能完整地展示程序是怎樣煉成的。對(duì)于同一編程任務(wù),提供盡可能多的設(shè)計(jì)思路和不同的算法以及實(shí)現(xiàn)代碼,幫助您打開(kāi)程序設(shè)計(jì)思維的匣子。 本書(shū)側(cè)重于培養(yǎng)您作為程序設(shè)計(jì)者必須具備的計(jì)算思維。所謂的計(jì)算思維,就是以計(jì)算機(jī)的方式去思考問(wèn)題的求解過(guò)程。作為機(jī)器的計(jì)算機(jī)思考問(wèn)題的方式與作為萬(wàn)物之靈的人的思考問(wèn)題方式是不同的。人通過(guò)學(xué)習(xí)程序設(shè)計(jì)去理解并掌握計(jì)算機(jī)思考問(wèn)題的方式,這個(gè)過(guò)程就是培養(yǎng)計(jì)算思維的過(guò)程。因此,本書(shū)以求解具體應(yīng)用問(wèn)題為目標(biāo),驅(qū)動(dòng)相關(guān)程序設(shè)計(jì)知識(shí)的應(yīng)用。 本書(shū)強(qiáng)調(diào),程序設(shè)計(jì)語(yǔ)言是求解問(wèn)題的工具,程序設(shè)計(jì)語(yǔ)言是為求解問(wèn)題服務(wù)的。本書(shū)對(duì)語(yǔ)法的講解以夠用為準(zhǔn),不提倡代碼中應(yīng)用古怪、費(fèi)解的語(yǔ)法。當(dāng)然,程序設(shè)計(jì)必須掌握相關(guān)語(yǔ)法,有語(yǔ)法錯(cuò)誤的程序過(guò)不了編譯關(guān)。掌握C語(yǔ)言語(yǔ)法不是程序設(shè)計(jì)學(xué)習(xí)的重點(diǎn),更不是學(xué)習(xí)目的。培養(yǎng)計(jì)算思維,能利用程序設(shè)計(jì)語(yǔ)言解決實(shí)際應(yīng)用問(wèn)題才是最終目的,學(xué)習(xí)程序設(shè)計(jì)必須過(guò)實(shí)際運(yùn)行關(guān)。 C語(yǔ)言具有語(yǔ)法簡(jiǎn)潔、概念清晰、底層控制力強(qiáng)等優(yōu)點(diǎn),是值得程序設(shè)計(jì)初學(xué)者首選的語(yǔ)言。C語(yǔ)言雖是面向過(guò)程的程序設(shè)計(jì)語(yǔ)言,但是學(xué)好C語(yǔ)言將為面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言(如C 、Java、C#、Python等)的學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ)。 學(xué)好編程沒(méi)有捷徑,上機(jī)練習(xí)、獨(dú)立思考、保持興趣、學(xué)用結(jié)合、日積月累、持之以恒是成為編程高手的秘籍。關(guān)于如何學(xué)習(xí)程序設(shè)計(jì)的建議請(qǐng)參見(jiàn)附錄10.1關(guān)于程序設(shè)計(jì)的學(xué)習(xí)方法(掃描前言中的二維碼)。 本書(shū)特色: 一、本書(shū)貫徹以求解應(yīng)用問(wèn)題(實(shí)際應(yīng)用問(wèn)題的一部分或?qū)嶋H應(yīng)用問(wèn)題的簡(jiǎn)化問(wèn)題)為導(dǎo)向,以具體編程任務(wù)為驅(qū)動(dòng)的程序設(shè)計(jì)學(xué)習(xí)方法,將每個(gè)知識(shí)點(diǎn)融入實(shí)際編程任務(wù)中。因此,展現(xiàn)在您面前的代碼是一個(gè)完整的、可運(yùn)行的、有輸入/輸出的、實(shí)現(xiàn)了一定功能的應(yīng)用程序,而不是僅僅為了講解某個(gè)知識(shí)點(diǎn)的片段的、不完整的代碼。 二、作為例題的編程任務(wù)生動(dòng)有趣。每個(gè)編程任務(wù)力求有現(xiàn)實(shí)生活應(yīng)用背景,讓您時(shí)刻不忘學(xué)習(xí)程序設(shè)計(jì)的目的是能運(yùn)用計(jì)算機(jī)程序解決現(xiàn)實(shí)生活中或大或小的實(shí)際問(wèn)題,體會(huì)計(jì)算機(jī)是如何按您的意圖行動(dòng)的,體會(huì)計(jì)算機(jī)給我們生活帶來(lái)的方便,體會(huì)計(jì)算機(jī)的威力與魅力。編程不再是單純地學(xué)習(xí)C語(yǔ)言語(yǔ)法,也不是純粹為了實(shí)現(xiàn)數(shù)學(xué)的數(shù)值計(jì)算。 三、圖表豐富。本書(shū)秉承能用圖和表表達(dá)的,一定畫(huà)圖做表的思想。因此,書(shū)中配有大量圖解、表格,大量地運(yùn)用了類(lèi)比、對(duì)比、小貼士、小問(wèn)答等形式,盡量用直觀(guān)的形式幫助您理解程序設(shè)計(jì)的概念、原理、機(jī)制等方面。 四、講解深入淺出。本書(shū)融入了我多年程序設(shè)計(jì)教學(xué)經(jīng)驗(yàn)、教學(xué)成果、應(yīng)用軟件開(kāi)發(fā)經(jīng)驗(yàn)和對(duì)程序設(shè)計(jì)的體會(huì)與理解。對(duì)程序中諸多概念的理解,需要程序設(shè)計(jì)者(以后簡(jiǎn)稱(chēng)為程序員)對(duì)操作系統(tǒng)的有關(guān)原理有一定的理解。因此,本書(shū)在講解程序的同時(shí),盡量對(duì)發(fā)生在程序運(yùn)行背后的機(jī)制特別是操作系統(tǒng)中與編程相關(guān)的機(jī)制進(jìn)行了深入剖析。對(duì)操作系統(tǒng)和計(jì)算機(jī)原理的介紹,能幫助程序員深入地理解程序在底層的運(yùn)行機(jī)制,使程序員在編程時(shí)做到知其然且知其所以然。 五、程序代碼箭指代碼解釋?zhuān)喿x代碼一目了然、易讀易懂。對(duì)于程序代碼中每個(gè)重要語(yǔ)句,均引出箭頭指向相應(yīng)的代碼解釋?zhuān)a和對(duì)應(yīng)的解釋是左鄰右舍、如影相隨的,方便閱讀。此外,在排版上,也盡量將一個(gè)完整程序或函數(shù)模塊的代碼排在同一頁(yè)中,確保代碼的形式整體性。 六、本書(shū)站在程序員的角度來(lái)看待和學(xué)習(xí)C語(yǔ)言,而不是站在C語(yǔ)言的角度羅列C語(yǔ)言知識(shí)本身。站在程序員的角度,面對(duì)編程任務(wù)時(shí),我們應(yīng)該思考的是如何運(yùn)用C語(yǔ)言為我(即程序員)的設(shè)計(jì)目標(biāo)服務(wù)。從這個(gè)角度出發(fā),您就更容易理解和接受C語(yǔ)言的知識(shí)了。 本書(shū)的例題全部采用編程任務(wù)的形式給出。每個(gè)編程任務(wù)由8部分構(gòu)成:標(biāo)題、任務(wù)描述、輸入、輸出、輸入舉例、輸出舉例、分析,以及參考代碼。本書(shū)例題采用此形式是基于以下四點(diǎn)考慮的。 其一,這種方式對(duì)要解決的任務(wù)有清晰、準(zhǔn)確的編程描述,因此每個(gè)程序代碼需要達(dá)到的目標(biāo)和需要實(shí)現(xiàn)的功能非常明確。學(xué)習(xí)程序設(shè)計(jì)是為了能用自己設(shè)計(jì)的程序解決實(shí)際問(wèn)題,因此,我們將本書(shū)讀者的角色定為軟件開(kāi)發(fā)者。軟件開(kāi)發(fā)是軟件開(kāi)發(fā)者按照用戶(hù)提出的需求進(jìn)行軟件設(shè)計(jì)的過(guò)程。設(shè)計(jì)得到的軟件必須達(dá)到指定功能,滿(mǎn)足軟件用戶(hù)的需求。描述清晰、準(zhǔn)確的軟件需求對(duì)軟件開(kāi)發(fā)至關(guān)重要。因?yàn)樾枨蟮男∽兓,可能?dǎo)致軟件設(shè)計(jì)的巨大改變,甚至從頭重新設(shè)計(jì)。 其二,有利于獨(dú)立思考和尋求解決問(wèn)題的多種方法,培養(yǎng)計(jì)算思維。在達(dá)到既定軟件開(kāi)發(fā)目標(biāo)的情況下,鼓勵(lì)讀者學(xué)會(huì)分析問(wèn)題,開(kāi)動(dòng)腦筋獨(dú)立思考,嘗試用不同思路、不同算法或不同的代碼去完成同一個(gè)任務(wù),對(duì)比不同實(shí)現(xiàn)方式之間的優(yōu)缺點(diǎn)。對(duì)于每個(gè)編程任務(wù),本書(shū)代碼僅供參考。本書(shū)絕不鼓勵(lì)讀者僅滿(mǎn)足于將本書(shū)代碼照抄照搬,死記硬背。 其三,對(duì)C語(yǔ)言知識(shí)點(diǎn)均采用融入具體編程任務(wù)的方式講解,使我們對(duì)每個(gè)C語(yǔ)言知識(shí)要素所適用的實(shí)際應(yīng)用場(chǎng)合有最感性的認(rèn)識(shí)。 其四,方便使用OJ作為程序設(shè)計(jì)在線(xiàn)練習(xí)平臺(tái)。本書(shū)的編程任務(wù)便于自動(dòng)裁判(可簡(jiǎn)單地將裁判理解為教師批改學(xué)生所交的程序設(shè)計(jì)作業(yè)這一過(guò)程)。國(guó)內(nèi)外有許多大學(xué)和組織提供了開(kāi)放式的在線(xiàn)裁判系統(tǒng)(Online Judge,OJ),它能對(duì)提交的程序源代碼進(jìn)行自動(dòng)裁判。OJ系統(tǒng)24小時(shí)在線(xiàn)練習(xí)資源豐富,裁判結(jié)果公正客觀(guān)。OJ系統(tǒng)原本為程序設(shè)計(jì)競(jìng)賽所用,但是好的工具為什么不能用于學(xué)習(xí)呢?參加過(guò)信息學(xué)競(jìng)賽(IOI,NOI)或大學(xué)生程序設(shè)計(jì)競(jìng)賽(CPC)的讀者一定對(duì)這種編程任務(wù)的形式不陌生,因?yàn)楦?jìng)賽題采用此形式。希望本書(shū)讀者不要對(duì)此表示疑惑,學(xué)習(xí)程序設(shè)計(jì)當(dāng)然不是為了參加比賽。在此,只是取其長(zhǎng)而用之,更好地服務(wù)于學(xué)習(xí)程序設(shè)計(jì)這一目標(biāo)。我早在2009年就開(kāi)始將OJ系統(tǒng)作為練習(xí)平臺(tái)引入到信息類(lèi)本科專(zhuān)業(yè)的C程序設(shè)計(jì)課程教學(xué)中,得到了學(xué)生和同行的好評(píng)與認(rèn)可。目前,將OJ作為程序設(shè)計(jì)教學(xué)練習(xí)平臺(tái)的做法在越來(lái)越多的學(xué)校的程序設(shè)計(jì)教學(xué)中得到運(yùn)用。 本書(shū)提供所有編程任務(wù)的描述、測(cè)試用例數(shù)據(jù)和標(biāo)程,并且不斷補(bǔ)充高質(zhì)量的編程任務(wù)作為練習(xí)或測(cè)試用。讀者(包括教師或?qū)W生)可在OJ上練習(xí)、實(shí)驗(yàn)、測(cè)試和上機(jī)考試。如果您所在學(xué)校尚未建立OJ系統(tǒng),可自主開(kāi)發(fā)OJ,也可利用開(kāi)源系統(tǒng)部署自己的OJ,或者直接利用互聯(lián)網(wǎng)上開(kāi)放的OJ系統(tǒng)。如果OJ上沒(méi)有想要練習(xí)的編程任務(wù),則需要先在OJ上添加它。歡迎使用湖南農(nóng)業(yè)大學(xué)程序設(shè)計(jì)在線(xiàn)練習(xí)系統(tǒng)(http://210.43.224.19/oj)。 本書(shū)適合作為本科低年級(jí)程序設(shè)計(jì)課程教材,也非常適合程序設(shè)計(jì)初學(xué)者自學(xué)使用。對(duì)參加奧林匹克信息學(xué)競(jìng)賽的隊(duì)員和參加ACM/ICPC大學(xué)生程序設(shè)計(jì)競(jìng)賽的隊(duì)員來(lái)說(shuō),也是一本非常好的入門(mén)教材。對(duì)于有一定程序設(shè)計(jì)基礎(chǔ)的讀者,本書(shū)也不失參考價(jià)值。書(shū)中有許多對(duì)程序深入的剖析很有啟發(fā)意義,值得一讀。 眾所周知,C程序設(shè)計(jì)課程是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)、信息類(lèi)專(zhuān)業(yè)極其重要的專(zhuān)業(yè)基礎(chǔ)課。我從事本科程序設(shè)計(jì)專(zhuān)業(yè)基礎(chǔ)課一線(xiàn)教學(xué)十余年,希望能有一本讀起來(lái)不那么枯燥,同時(shí)又不失專(zhuān)業(yè)性和系統(tǒng)性的面向程序設(shè)計(jì)初學(xué)者的C語(yǔ)言圖書(shū),這是我寫(xiě)本書(shū)的意圖。如何利用本書(shū),各位見(jiàn)仁見(jiàn)智。 希望通過(guò)本書(shū)帶給讀者更多愉悅的程序設(shè)計(jì)經(jīng)歷,提振編程信心,激發(fā)編程的興趣,為今后的學(xué)習(xí)、工作、科研培養(yǎng)良好的計(jì)算思維和軟件設(shè)計(jì)基礎(chǔ)。 本書(shū)的寫(xiě)作是我將頭腦中紛繁的思緒變成有條理文字的過(guò)程,既艱辛又充滿(mǎn)快樂(lè)。常常為了設(shè)計(jì)一個(gè)恰到好處的編程任務(wù)或?yàn)榱烁玫乇硎瞿硞(gè)概念,靈感突現(xiàn),即使是已臥床或半夜醒來(lái),也立刻記錄,唯恐遺漏。本書(shū)力求知識(shí)更加系統(tǒng)、表述更加準(zhǔn)確、語(yǔ)言更加通俗、例子更加貼近生活,這使寫(xiě)作過(guò)程充滿(mǎn)挑戰(zhàn)性,字句斟酌,直到自己滿(mǎn)意為止,以致成書(shū)過(guò)程如此漫長(zhǎng)。對(duì)本書(shū)內(nèi)容安排、章節(jié)設(shè)置、設(shè)置每個(gè)例子代碼甚至每段表述,都經(jīng)過(guò)反復(fù)琢磨和權(quán)衡,力求語(yǔ)言描述精準(zhǔn)、思想表達(dá)透徹。漫長(zhǎng)的成書(shū)過(guò)程,讓我體會(huì)到了寫(xiě)書(shū)的不易,不過(guò),本書(shū)寫(xiě)作過(guò)程帶給我更多的是快樂(lè)。在寫(xiě)作期間,不僅有將存在于腦海的點(diǎn)滴心得隨著鍵盤(pán)的敲擊變成文字的快感,而且,在此期間我的兒子不經(jīng)意間長(zhǎng)成了帥小伙,陪伴他的時(shí)間總是短暫而歡快的。我的妻子雖常常擔(dān)心因長(zhǎng)時(shí)伏案而有腰椎疾病的我,但她送來(lái)鍵盤(pán)旁的一杯熱茶、一碟水果,頓時(shí)讓我滿(mǎn)血復(fù)活。特別感謝我的妻子陳海燕女士包容我無(wú)數(shù)個(gè)日夜以計(jì)算機(jī)為伴而少有陪伴她,家務(wù)操持多勞她費(fèi)心,雖偶有抱怨,但忍韌而堅(jiān)強(qiáng)。謹(jǐn)以此書(shū)獻(xiàn)給我的家人。 感謝電子工業(yè)出版社高等教育分社譚海平社長(zhǎng)和冉哲編輯對(duì)我蝸牛般寫(xiě)稿進(jìn)度的容忍。 感謝我的學(xué)生盧晨曦、邵振宇、王舒心、王鵬、陳慧、張洋、唐朝宇、廖顏勤、姚沛豐、熊嘉奇、唐航、周子翔、沈煜恒為本書(shū)的校對(duì)付出了辛勤勞動(dòng)。 雖然我對(duì)本書(shū)寫(xiě)作用心盡力,但由于學(xué)識(shí)水平有限,錯(cuò)誤與不足之處在所難免,懇請(qǐng)批評(píng)指正(我的郵箱:390199309@qq.com)。 限于篇幅,本書(shū)第1章至第9章的綜合應(yīng)用實(shí)例和知識(shí)拓展部分以及附錄部分,以?huà)呙瓒S碼下載相應(yīng)文檔的形式提供。 附錄: 賀細(xì)平
博士,國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)。湖南農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院電商系主任,副教授。中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員,湖南省高教學(xué)會(huì)計(jì)算機(jī)教育專(zhuān)業(yè)委員會(huì)會(huì)員。出版教材:現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)原理及技術(shù)研究,中國(guó)商務(wù)出版社,2013年。
目 錄
第1章 邂逅程序設(shè)計(jì)初識(shí)C語(yǔ)言1 1.1 第一個(gè)程序我會(huì)算加法2 1.2 人機(jī)交互輸入和輸出函數(shù)的基本用法10 1.3 條件與判斷隨機(jī)應(yīng)變17 1.3.1 二叉分支的表達(dá)基本的if-else語(yǔ)句17 1.3.2 復(fù)合條件的表達(dá)22 1.4 利用庫(kù)函數(shù)拿來(lái)主義25 1.5 機(jī)器擅長(zhǎng)之算術(shù)運(yùn)算計(jì)算機(jī)的老本行28 1.6 變量數(shù)據(jù)的棲身之所34 1.6.1 變量的概念34 1.6.2 變量的數(shù)據(jù)類(lèi)型37 1.6.3 程序中的常量40 1.7 賦值運(yùn)算改變變量的值42 1.8 程序設(shè)計(jì)的一般過(guò)程47 本章小結(jié)48 第2章 程序邏輯之關(guān)鍵分支與循環(huán)51 2.1 機(jī)器智能與決策之基石分支結(jié)構(gòu)52 2.1.1 決策與分支結(jié)構(gòu)52 2.1.2 基本分支結(jié)構(gòu)及其連接方式60 2.1.3 邏輯運(yùn)算與復(fù)合條件表達(dá)71 2.1.4 if條件表達(dá)典型錯(cuò)誤分析75 2.2 機(jī)器擅長(zhǎng)之循環(huán)不厭其煩地重復(fù)77 2.2.1 for循環(huán)的引入78 2.2.2 剖析for循環(huán)86 2.2.3 必須應(yīng)用循環(huán)結(jié)構(gòu)的場(chǎng)合90 2.2.4 循環(huán)的初步運(yùn)用93 2.2.5 for循環(huán)常見(jiàn)錯(cuò)誤分析96 2.3 程序邏輯進(jìn)階多分支和多重循環(huán)98 2.3.1 深入理解循環(huán)98 2.3.2 循環(huán)的連接100 2.3.3 雙重循環(huán)與多重循環(huán)107 2.3.4 break和continue的運(yùn)用110 2.3.5 分支與循環(huán)的串聯(lián)和嵌套120 2.4 其他形式分支與循環(huán)121 2.4.1 switch-case分支結(jié)構(gòu)121 2.4.2 while與do...while循環(huán)128 本章小結(jié)130 第3章 批量數(shù)據(jù)存儲(chǔ)與處理數(shù)組134 3.1 何時(shí)需要數(shù)組134 3.2 序列數(shù)據(jù)的處理一維數(shù)組135 3.2.1 一維數(shù)組的定義135 3.2.2 數(shù)組與內(nèi)存分配137 3.2.3 數(shù)組操作之演練140 3.2.4 一維數(shù)組的運(yùn)用141 3.2.5 巧用數(shù)組下標(biāo)149 3.3 表格型數(shù)據(jù)的處理二維數(shù)組154 3.3.1 二維數(shù)組的定義154 3.3.2 訪(fǎng)問(wèn)二維數(shù)組的元素155 3.3.3 二維數(shù)組操作演練155 3.3.4 二維數(shù)組的應(yīng)用159 3.4 其他164 3.4.1 數(shù)組的拓展多維數(shù)組164 3.4.2 二維數(shù)組與一維數(shù)組的關(guān)系165 3.4.3 數(shù)組下標(biāo)越界165 3.4.4 數(shù)組定義時(shí)的大小能否為變量167 本章小結(jié)168 第4章 文本數(shù)據(jù)處理字符串169 4.1 字符數(shù)據(jù)存儲(chǔ)和處理169 4.1.1 字符的編碼169 4.1.2 字符數(shù)據(jù)的存儲(chǔ)173 4.1.3 字符數(shù)據(jù)的運(yùn)算173 4.2 字符串?dāng)?shù)據(jù)存儲(chǔ)和處理176 4.2.1 字符串的存儲(chǔ)176 4.2.2 文本型數(shù)據(jù)輸入/輸出177 4.2.3 字符串處理與庫(kù)函數(shù)180 4.3 文本型數(shù)據(jù)處理之演練190 4.4 其他193 4.4.1 空字符'\0'的作用193 4.4.2 字符和字符串的區(qū)別與聯(lián)系194 本章小結(jié)195 第5章 模塊化設(shè)計(jì)之利器函數(shù)196 5.1 初識(shí)函數(shù)設(shè)計(jì)197 5.2 函數(shù)的概念200 5.2.1 函數(shù)的概念剖析200 5.2.2 模塊化設(shè)計(jì)思想在函數(shù)中的體現(xiàn)203 5.3 新函數(shù)是如何煉成的206 5.4 函數(shù)的設(shè)計(jì)207 5.4.1 發(fā)掘任務(wù)中的模塊207 5.4.2 函數(shù)的定義207 5.4.3 設(shè)計(jì)函數(shù)的方法論209 5.4.4 設(shè)計(jì)函數(shù)的要點(diǎn)詳解211 5.5 函數(shù)的測(cè)試220 5.6 函數(shù)的交付使用221 5.6.1 函數(shù)的調(diào)用形式223 5.6.2 函數(shù)調(diào)用過(guò)程詳解224 5.6.3 函數(shù)參數(shù)的傳遞230 5.6.4 函數(shù)的聲明234 5.7 函數(shù)設(shè)計(jì)實(shí)踐236 5.8 函數(shù)的遞歸自相似之美249 5.8.1 初識(shí)遞歸函數(shù)250 5.8.2 遞歸函數(shù)設(shè)計(jì)的關(guān)鍵點(diǎn)253 5.8.3 遞歸調(diào)用的執(zhí)行過(guò)程262 5.8.4 二分法與遞歸264 5.8.5 遞歸與非遞歸273 5.8.6 提高遞歸效率281 5.9 函數(shù)相關(guān)主題287 5.9.1 局部變量與全局變量287 5.9.2 函數(shù)的嵌套定義的應(yīng)用289 5.9.3 如何生成隨機(jī)數(shù)289 5.9.4 庫(kù)函數(shù)295 5.9.5 初談提高程序效率295 本章小結(jié)299 第6章 內(nèi)存間接訪(fǎng)問(wèn)之神器指針301 6.1 深入理解內(nèi)存地址302 6.1.1 內(nèi)存是什么302 6.1.2 什么是內(nèi)存地址302 6.2 間接訪(fǎng)問(wèn)與直接訪(fǎng)問(wèn)305 6.3 指針變量與普通變量309 6.3.1 指針變量的概念309 6.3.2 揭秘指針的由來(lái)310 6.3.3 普通變量與指針變量的對(duì)比311 6.4 指針與數(shù)組的天然聯(lián)系312 6.4.1 數(shù)組名與數(shù)組起始地址312 6.4.2 揭秘訪(fǎng)問(wèn)數(shù)組的更多細(xì)節(jié)313 6.5 指針的移動(dòng)319 6.6 地址值在函數(shù)調(diào)用中的特殊作用331 6.6.1 函數(shù)調(diào)用過(guò)程詳解331 6.6.2 指針作為函數(shù)參數(shù)334 6.6.3 數(shù)組名作為函數(shù)實(shí)參341 6.6.4 可接受地址值的形參類(lèi)型探究349 6.7 指針與動(dòng)態(tài)內(nèi)存分配352 6.7.1 一維數(shù)組的動(dòng)態(tài)內(nèi)存分配354 6.7.2 二維及多維數(shù)組與指針357 6.7.3 多階指針370 6.7.4 返回值為指向動(dòng)態(tài)分配空間的指針370 6.8 變量的存儲(chǔ)區(qū)、作用范圍與生命期371 6.8.1 靜態(tài)變量和全局變量372 6.8.2 進(jìn)程內(nèi)存地址空間布局376 6.8.3 變量的作用范圍、生命期和存儲(chǔ)區(qū)379 6.8.4 extern的用法382 6.9 函數(shù)也可作為參數(shù)函數(shù)指針與應(yīng)用384 6.9.1 函數(shù)指針的概念384 6.9.2 函數(shù)指針數(shù)組的運(yùn)用387 6.9.3 函數(shù)指針與qsort( )函數(shù)的應(yīng)用388 本章小結(jié)396 第7章 創(chuàng)造新數(shù)據(jù)類(lèi)型結(jié)構(gòu)體類(lèi)型399 7.1 為何引入結(jié)構(gòu)體類(lèi)型399 7.2 結(jié)構(gòu)體類(lèi)型的定義和基本用法402 7.2.1 結(jié)構(gòu)體類(lèi)型的定義402 7.2.2 結(jié)構(gòu)體類(lèi)型的基本用法406 7.3 結(jié)構(gòu)體類(lèi)型數(shù)組的用法409 7.4 結(jié)構(gòu)體類(lèi)型在函數(shù)中的運(yùn)用411 7.4.1 結(jié)構(gòu)體類(lèi)型在函數(shù)中的一般用法411 7.4.2 結(jié)構(gòu)體類(lèi)型數(shù)組的排序420 7.5 結(jié)構(gòu)體類(lèi)型與鏈表431 7.5.1 鏈表的概念和用途431 7.5.2 鏈表432 7.5.3 為什么需要鏈表439 7.5.4 循環(huán)單鏈表及其應(yīng)用440 本章小結(jié)447 第8章 數(shù)據(jù)持久化文件448 8.1 文件的基本概念449 8.1.1 文件的紙帶模型449 8.1.2 緩沖文件讀/寫(xiě)過(guò)程模型451 8.1.3 讀/寫(xiě)文件基本流程與文件指針452 8.1.4 文件打開(kāi)方式454 8.2 文件的讀/寫(xiě)454 8.2.1 文本文件的讀/寫(xiě)454 8.2.2 二進(jìn)制文件讀/寫(xiě)459 8.3 文件讀/寫(xiě)位置的定位466 8.4 文本文件與二進(jìn)制文件的對(duì)比470 8.5 其他主題475 8.5.1 關(guān)于stdin、stdout、stderr475 8.5.2 標(biāo)準(zhǔn)輸入、輸出的重定向476 8.5.3 理解和運(yùn)用stderr與stdout478 8.5.4 fflush( )函數(shù)的用法479 8.5.5 EOF的運(yùn)用481 8.5.6 容易被誤解的feof( )函數(shù)482 8.5.7 fgets( )與gets( )的區(qū)別484 本章小結(jié)485 第9章 深入到bit的運(yùn)算位運(yùn)算487 9.1 位運(yùn)算的運(yùn)算符487 9.2 初識(shí)位運(yùn)算488 9.3 位運(yùn)算的應(yīng)用489 9.4 位運(yùn)算的注意事項(xiàng)505 9.4.1 右移的補(bǔ)位方式505 9.4.2 移位量的取模特性506 9.4.3 位運(yùn)算的數(shù)據(jù)類(lèi)型507 9.5 位域509 本章小結(jié)510
你還可能感興趣
我要評(píng)論
|