C語(yǔ)言是國(guó)內(nèi)外廣泛使用的計(jì)算機(jī)高級(jí)語(yǔ)言,譚浩強(qiáng)教授所著的《C程序設(shè)計(jì)》(清華大學(xué)出版社出版)一書(shū)已累計(jì)發(fā)行了1600多萬(wàn)冊(cè),創(chuàng)計(jì)算機(jī)書(shū)籍國(guó)內(nèi)外發(fā)行最高紀(jì)錄,被公認(rèn)為是學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的經(jīng)典教材。根據(jù)廣大高職高專院校師生的要求,清華大學(xué)出版社特邀請(qǐng)譚浩強(qiáng)教授在其C系列教材的基礎(chǔ)上針對(duì)高職高專的特點(diǎn)組織著寫(xiě)了本書(shū),作為高職高專院校學(xué)習(xí)程序設(shè)計(jì)的教材。
本書(shū)系統(tǒng)而通俗地介紹了怎樣使用C語(yǔ)言進(jìn)行程序設(shè)計(jì),使學(xué)生學(xué)習(xí)到程序設(shè)計(jì)的方法和有關(guān)算法的基本知識(shí)、C語(yǔ)言的基本內(nèi)容與使用方法,了解并初步掌握用計(jì)算機(jī)解題的全過(guò)程。
著者善于用通俗易懂的方法和語(yǔ)言闡明復(fù)雜的概念。本書(shū)定位準(zhǔn)確、概念清晰、分析透徹、內(nèi)容充實(shí)、取舍合理、例題豐富、通俗易懂。著者采用提出問(wèn)題解決問(wèn)題歸納分析的方式,符合初學(xué)者的認(rèn)知規(guī)律,學(xué)習(xí)本書(shū)的讀者很容易入門(mén)。
本書(shū)根據(jù)C99(ISO/IEC 9899:1999)新標(biāo)準(zhǔn)介紹程序設(shè)計(jì),體現(xiàn)教材的先進(jìn)性和規(guī)范性。著者同時(shí)著寫(xiě)了《C語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)》(ISBN 9787302556176)作為本書(shū)的配套用書(shū),由清華大學(xué)出版社出版發(fā)行。另外,本書(shū)還有配套的慕課(MOOC)視頻可以幫助學(xué)生學(xué)習(xí)。
本書(shū)可作為高職高專院校各專業(yè)學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的適用教材,還可作為計(jì)算機(jī)培訓(xùn)班的教材,同時(shí)也是一本不可多得的優(yōu)秀的自學(xué)教材,零基礎(chǔ)的讀者都能看懂本書(shū)的內(nèi)容。
本書(shū)作者有多年的企業(yè)從業(yè)實(shí)際工作經(jīng)驗(yàn),教材定位準(zhǔn),內(nèi)容實(shí)用,有大量的實(shí)用案例,適合學(xué)生和從業(yè)者學(xué)習(xí)。編輯QQ 1102528884
本書(shū)是專為高職高專學(xué)生編寫(xiě)的,介紹怎樣使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的教材。
近十多年,我國(guó)職業(yè)教育從層次走向類型,從政府主體走向多元參與,從規(guī)模擴(kuò)張走向內(nèi)涵發(fā)展,建成了全世界規(guī)模最大的職業(yè)教育體系。
優(yōu)化類型定位,努力培養(yǎng)高素質(zhì)、高水平的應(yīng)用型人才,是國(guó)家和社會(huì)的迫切需要。教材建設(shè)也應(yīng)當(dāng)服務(wù)于這個(gè)目標(biāo)。
程序設(shè)計(jì)是計(jì)算機(jī)工作者的一項(xiàng)基本功。C語(yǔ)言是在國(guó)內(nèi)外被廣泛學(xué)習(xí)和使用的一種計(jì)算機(jī)語(yǔ)言,受到廣大計(jì)算機(jī)愛(ài)好者的喜愛(ài)。我國(guó)幾乎所有的理工科大學(xué)都開(kāi)設(shè)了C語(yǔ)言程序設(shè)計(jì)課程。
為了使C語(yǔ)言程序設(shè)計(jì)課程教學(xué)取得更好的效果,需要弄清楚以下幾個(gè)問(wèn)題。
一、 為什么要學(xué)習(xí)程序設(shè)計(jì)
計(jì)算機(jī)的本質(zhì)是程序的機(jī)器,程序和指令的思想是計(jì)算機(jī)系統(tǒng)中最基本的概念。只有懂得程序設(shè)計(jì),懂得計(jì)算機(jī)是怎樣工作的,才能較深入地理解和應(yīng)用計(jì)算機(jī),才能較好地懂得怎樣使計(jì)算機(jī)按照人們的意圖進(jìn)行工作。學(xué)習(xí)程序設(shè)計(jì),能學(xué)習(xí)到計(jì)算機(jī)處理問(wèn)題的方法,培養(yǎng)計(jì)算思維,培養(yǎng)分析問(wèn)題和解決問(wèn)題的能力。
通過(guò)學(xué)習(xí)程序設(shè)計(jì),使學(xué)生具有程序設(shè)計(jì)的初步知識(shí),具有編寫(xiě)程序的初步能力,知道軟件開(kāi)發(fā)的過(guò)程和特點(diǎn),有利于在各專業(yè)領(lǐng)域的工作者在今后工作中,能夠與程序開(kāi)發(fā)人員溝通合作進(jìn)行應(yīng)用軟件的開(kāi)發(fā)工作。因此,高職高專學(xué)生學(xué)習(xí)程序設(shè)計(jì)是很有好處的。
具體地說(shuō),學(xué)習(xí)程序設(shè)計(jì)的目的有兩個(gè)方面: ①學(xué)習(xí)用計(jì)算機(jī)解決問(wèn)題的思路和方法; ②學(xué)習(xí)怎樣用計(jì)算機(jī)工具去實(shí)現(xiàn)算法,即利用計(jì)算機(jī)去完成任務(wù)。
二、 C語(yǔ)言是基礎(chǔ)而實(shí)用的語(yǔ)言
進(jìn)行程序設(shè)計(jì),必須用計(jì)算機(jī)語(yǔ)言作為工具,否則只是紙上談兵?晒┻x擇計(jì)算機(jī)的語(yǔ)言有很多種且各有特點(diǎn)。C語(yǔ)言既是程序設(shè)計(jì)的基礎(chǔ),又非常實(shí)用。并不是每一種計(jì)算機(jī)語(yǔ)言都具有此特點(diǎn),有的計(jì)算機(jī)語(yǔ)言實(shí)用,但不能作為基礎(chǔ)語(yǔ)言(如FORTRAN);有的計(jì)算機(jī)語(yǔ)言可以作為基礎(chǔ)語(yǔ)言,但實(shí)際應(yīng)用不多(如Pascal)。C語(yǔ)言功能豐富、表達(dá)能力強(qiáng)、使用靈活方便、應(yīng)用面廣、目標(biāo)程序效率高、可移植性好,既具有高級(jí)語(yǔ)言的優(yōu)點(diǎn),又具有低級(jí)語(yǔ)言的許多特點(diǎn);既適合編寫(xiě)系統(tǒng)軟件,又能方便地用來(lái)編寫(xiě)應(yīng)用軟件,是多年來(lái)在國(guó)內(nèi)外使用較廣泛的一種計(jì)算機(jī)語(yǔ)言。
國(guó)內(nèi)外許多專家認(rèn)為,C語(yǔ)言是通用語(yǔ)言,有了C語(yǔ)言的基礎(chǔ)后,以后過(guò)渡到任何一種語(yǔ)言(如C 、C#、Java)都不會(huì)困難。C語(yǔ)言被認(rèn)為是計(jì)算機(jī)專業(yè)人員的基本功。
三、 怎樣學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)
1. 準(zhǔn)確掌握本課程的特點(diǎn)與定位
C語(yǔ)言程序設(shè)計(jì)不是一門(mén)理論課程,它有很強(qiáng)的應(yīng)用性,要根據(jù)應(yīng)用的需要來(lái)設(shè)計(jì)課程體系和取舍內(nèi)容。學(xué)習(xí)好壞的標(biāo)準(zhǔn)不是知道什么,而是會(huì)做什么,應(yīng)當(dāng)強(qiáng)調(diào)培養(yǎng)應(yīng)用能力。但是它又不同于高職高專一些技能性或工藝性的課程,C語(yǔ)言學(xué)習(xí)的過(guò)程不是簡(jiǎn)單的重復(fù)和模仿,熟能生巧,而是需要領(lǐng)會(huì)精神,掌握規(guī)律,開(kāi)動(dòng)腦筋,認(rèn)真思考,有所創(chuàng)造,是充滿思想活力的過(guò)程。學(xué)習(xí)的方法不是簡(jiǎn)單的動(dòng)手干,而是要?jiǎng)幽X思考,動(dòng)手實(shí)踐,實(shí)踐包括編程和上機(jī)。學(xué)生領(lǐng)到開(kāi)發(fā)任務(wù)后,首先要認(rèn)真思考解題思路,設(shè)計(jì)最優(yōu)算法,然后編寫(xiě)出高質(zhì)量的程序,這是有創(chuàng)造性的智力勞動(dòng),是學(xué)習(xí)和培養(yǎng)科學(xué)思維的過(guò)程。
本書(shū)介紹了許多例題,并不是要求學(xué)生只是看懂和重復(fù)這些例題,而是要求學(xué)生學(xué)習(xí)解決問(wèn)題的思路,從而能舉一反三,能獨(dú)立解決其他問(wèn)題。
2. 正確處理好算法和語(yǔ)法的關(guān)系
程序設(shè)計(jì)有四個(gè)要素: ①算法是程序的靈魂; ②數(shù)據(jù)結(jié)構(gòu)是加工的對(duì)象; ③語(yǔ)言是編程工具(算法要通過(guò)語(yǔ)言實(shí)現(xiàn)); ④要采用合適的程序設(shè)計(jì)方法。程序設(shè)計(jì)教學(xué)是否成功取決于能否將以上四個(gè)要素(尤其是算法與語(yǔ)言)緊密結(jié)合。
本書(shū)自始至終把四個(gè)要素自然而有機(jī)地結(jié)合,尤其是能正確處理好算法和語(yǔ)法的關(guān)系。算法和語(yǔ)法這二者都重要,不掌握算法就如同無(wú)頭蒼蠅,無(wú)從編程;不掌握語(yǔ)法就編不出能用的程序。學(xué)習(xí)程序設(shè)計(jì)應(yīng)當(dāng)把主要精力放在算法上,算法是活的,語(yǔ)法是死的;镜恼Z(yǔ)法規(guī)則是需要了解和掌握的,但是沒(méi)有必要去死記那些煩瑣的語(yǔ)法細(xì)節(jié),用到時(shí)查一下就可以。程序看多了、編多了,自然就會(huì)正確使用語(yǔ)法規(guī)則。學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì),不要把重點(diǎn)放在死記語(yǔ)法規(guī)則上。
本書(shū)不是介紹語(yǔ)法的書(shū)籍,不是以語(yǔ)法為主線構(gòu)建課程體系,也不是系統(tǒng)介紹算法的教材,而是從應(yīng)用的角度出發(fā), 以編程為目的和主線,由淺入深地介紹怎樣用C語(yǔ)言處理問(wèn)題。通過(guò)精心安排順序,細(xì)心選擇例子,由易而難選擇算法,與此同時(shí)引入相應(yīng)的語(yǔ)法規(guī)則,把算法和語(yǔ)法緊密結(jié)合,同步展開(kāi),步步深入,使學(xué)生易于學(xué)習(xí)。
具體的做法是: 每一章先舉幾個(gè)比較簡(jiǎn)單的例子,引入新的問(wèn)題,接著介紹怎樣利用C語(yǔ)言去解決比較簡(jiǎn)單的問(wèn)題,然后循序漸進(jìn)地介紹較深入的算法和程序,使學(xué)生在富有創(chuàng)意、引人入勝的編程中學(xué)會(huì)了算法,掌握了語(yǔ)法,領(lǐng)悟了程序設(shè)計(jì)的思想和方法。把枯燥無(wú)味的語(yǔ)法規(guī)則變成生動(dòng)活潑的編程應(yīng)用。
建議教師在講授本書(shū)內(nèi)容時(shí),以程序?yàn)橹行恼归_(kāi),著重講清解題思路以及怎樣用程序去實(shí)現(xiàn)它,不要孤立地介紹語(yǔ)法規(guī)則?梢栽谥v解程序時(shí)扼要地介紹有關(guān)的語(yǔ)法規(guī)則,請(qǐng)學(xué)生課后自己閱讀,并通過(guò)上機(jī)實(shí)踐掌握它。
3. 采取新的教學(xué)思路和方法
以往的課程教學(xué)采取的方法是 提出概念解釋概念舉例說(shuō)明的方式,著者在多年前根據(jù)課程特點(diǎn)提出了提出問(wèn)題解決問(wèn)題歸納分析這種新方式,不是先抽象后具體,先理論后實(shí)際,先一般后個(gè)別,而是由具體到抽象,由實(shí)際到理論,由個(gè)別到一般,由零散到完整。實(shí)踐證明這種方法對(duì)廣大計(jì)算機(jī)的初學(xué)者是成功的,可以收到事半功倍的效果。根據(jù)這個(gè)原則,我們創(chuàng)建了新的教學(xué)和教材體系,已在實(shí)踐中證明效果很好。
在介紹每一個(gè)程序時(shí),我們的做法是: 先提出任務(wù)目標(biāo),然后分析問(wèn)題,探討解題思路,構(gòu)造算法,接下來(lái)才是根據(jù)算法編寫(xiě)程序,而不是先列出一個(gè)程序再解釋程序。對(duì)每一個(gè)問(wèn)題都按照任務(wù)要求解題思路編寫(xiě)程序運(yùn)行結(jié)果程序分析等步驟展開(kāi)。對(duì)每個(gè)求解的問(wèn)題不僅給出程序,而且給出運(yùn)行結(jié)果,使學(xué)生看到結(jié)果,便于學(xué)生對(duì)照分析。有些程序還包括對(duì)改進(jìn)程序的討論,這樣學(xué)生在學(xué)習(xí)過(guò)程中就不會(huì)覺(jué)得抽象,而會(huì)覺(jué)得算法具體有趣,看得見(jiàn),摸得著。
本書(shū)的敘述充滿啟發(fā)性,在程序分析中不斷提出問(wèn)題讓學(xué)生思考,如這是為什么?為什么要這樣做?為什么這個(gè)方法是錯(cuò)的?還有什么更好的方法嗎?等,啟發(fā)學(xué)生自己思考求解,培養(yǎng)他們獨(dú)立思考的能力。對(duì)于需要學(xué)生注意的內(nèi)容用說(shuō)明、注意、提示、思考等標(biāo)題以醒目的字體標(biāo)注,從而引起注意,使學(xué)生的思路更加清晰,更容易接受和理解。
在各章中由淺入深地結(jié)合例題介紹各種典型的算法。對(duì)窮舉、遞推、迭代、遞歸、排序(包括比較交換法、選擇法、起泡法)、矩陣運(yùn)算、字符處理應(yīng)用等算法做了詳細(xì)的介紹,對(duì)難度較大的算法還做了清晰且詳盡的分析。引導(dǎo)學(xué)生在拿到程序設(shè)計(jì)題目后,先考慮算法再編程,而不是坐下來(lái)就寫(xiě)程序,著力培養(yǎng)學(xué)生的科學(xué)思維能力及良好的編程習(xí)慣。
4. 對(duì)有效地學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的建議
(1) 在學(xué)習(xí)開(kāi)始時(shí)不要在語(yǔ)法細(xì)節(jié)上死記死摳。請(qǐng)記住: 重要的是學(xué)會(huì)編程序,而不是死記語(yǔ)法。一開(kāi)始就要學(xué)會(huì)看懂程序,編寫(xiě)簡(jiǎn)單的程序,然后逐步深入。有一些語(yǔ)法細(xì)節(jié)需要通過(guò)長(zhǎng)期的實(shí)踐才能熟練地掌握。初學(xué)時(shí),切忌過(guò)早地濫用C語(yǔ)言的某些容易引起歧義的細(xì)節(jié)(如不適當(dāng)?shù)厥褂? 和--,就會(huì)出現(xiàn)一些副作用)。
(2) 不能設(shè)想今后一輩子只使用在學(xué)校里學(xué)過(guò)的某一種計(jì)算機(jī)語(yǔ)言。但是無(wú)論使用哪一種計(jì)算機(jī)語(yǔ)言進(jìn)行程序設(shè)計(jì),其基本思路和方法都是一樣的,在大學(xué)里學(xué)哪一種計(jì)算機(jī)語(yǔ)言并不是一個(gè)很重要的原則問(wèn)題。學(xué)會(huì)了一種計(jì)算機(jī)語(yǔ)言,可以很快地學(xué)會(huì)另一種計(jì)算機(jī)語(yǔ)言。因此,在學(xué)習(xí)時(shí)一定要學(xué)活用活,舉一反三,掌握規(guī)律,學(xué)會(huì)算法,在以后需要時(shí)能很快地掌握其他的計(jì)算機(jī)語(yǔ)言來(lái)進(jìn)行工作。
(3) 在學(xué)校學(xué)習(xí)階段主要是學(xué)習(xí)程序設(shè)計(jì)的方法,進(jìn)行程序設(shè)計(jì)的基本訓(xùn)練,打好將來(lái)進(jìn)一步學(xué)習(xí)和應(yīng)用的基礎(chǔ)。學(xué)習(xí)程序設(shè)計(jì)課程時(shí),應(yīng)該把精力放在最基本、最常用的內(nèi)容上,學(xué)好基本功。如果對(duì)學(xué)生有較高的程序設(shè)計(jì)要求,應(yīng)當(dāng)在學(xué)習(xí)完本課程后安排一次集中的課程設(shè)計(jì)環(huán)節(jié),完成有一定規(guī)模的程序設(shè)計(jì)。
(4) 程序設(shè)計(jì)是一門(mén)實(shí)踐性很強(qiáng)的課程,既要掌握概念,又要?jiǎng)邮志幊蹋要上機(jī)調(diào)試運(yùn)行,希望學(xué)生一定要重視實(shí)踐環(huán)節(jié),包括編程和上機(jī),要既會(huì)編寫(xiě)程序,又會(huì)調(diào)試程序。對(duì)學(xué)生考核的方法不能采用標(biāo)準(zhǔn)題(是非題或選擇題),而應(yīng)當(dāng)把重點(diǎn)放在編制程序和調(diào)試程序上。
(5) 使用哪一種編譯系統(tǒng)并不是原則問(wèn)題。程序編好以后,用哪一種編譯系統(tǒng)進(jìn)行編譯都可以。如果有條件,可以了解和使用不同的編譯環(huán)境。不同的編譯系統(tǒng),其功能和使用方法有些不同,編譯時(shí)給出的信息也不完全相同,但基本方法大同小異。要在使用中積累經(jīng)驗(yàn),舉一反三。
四、 本書(shū)的特點(diǎn)1. 本書(shū)的主要特點(diǎn)是概念清晰、通俗易懂(1) 概念清晰。本書(shū)對(duì)所有重要的概念都做了明確、清晰和透徹的闡述與分析,每引出一個(gè)概念,都明確講清楚三點(diǎn): ①它是什么?②它有什么用?③怎么用它去處理和解決問(wèn)題。所有的概念都能從本書(shū)找到明確的說(shuō)明。
(2) 通俗易懂。著者善于用通俗易懂的方法和語(yǔ)言闡明復(fù)雜的概念,而盡量少用深?yuàn)W難懂的專業(yè)術(shù)語(yǔ)。不把簡(jiǎn)單的問(wèn)題復(fù)雜化,而是使復(fù)雜的問(wèn)題簡(jiǎn)單化。例如,指針是C語(yǔ)言的一個(gè)難點(diǎn),許多人感到難以理解,但在本書(shū)中著者對(duì)指針的概念做了科學(xué)而通俗的說(shuō)明,使人更容易理解,一看即懂。
2. 本書(shū)內(nèi)容是根據(jù)高職高專的特點(diǎn)與要求確定的,適用于高職高專院校
在內(nèi)容選取時(shí),本書(shū)沒(méi)有包括C語(yǔ)言中一些不常用的內(nèi)容(如較復(fù)雜的輸入/輸出格式控制、指針較深入的部分、共用體類型、枚舉類型、隨機(jī)文件等。著者把它們作為提高的內(nèi)容放入與本書(shū)的學(xué)習(xí)輔導(dǎo)一書(shū)中供學(xué)生選學(xué)),但是仍然保持了本書(shū)內(nèi)容的系統(tǒng)性和完整性。由于本書(shū)通俗易懂,易于理解,因此,學(xué)生能夠在有限的學(xué)時(shí)內(nèi)學(xué)到更多的內(nèi)容,達(dá)到更高的要求。著者認(rèn)為應(yīng)當(dāng)保證高職教學(xué)的質(zhì)量,不宜過(guò)分降低對(duì)高職學(xué)生學(xué)習(xí)的要求,否則他們掌握不了基本的編程方法。
3. 本書(shū)從有效學(xué)習(xí)程序設(shè)計(jì)的角度出發(fā)來(lái)構(gòu)建教材體系
本書(shū)不以理論知識(shí)來(lái)構(gòu)建教材體系,也不以C語(yǔ)言的語(yǔ)法規(guī)則來(lái)構(gòu)建教材體系,而是從怎樣有效學(xué)習(xí)程序設(shè)計(jì)的角度出發(fā)來(lái)設(shè)計(jì)教材的內(nèi)容,使學(xué)生從易到難、從簡(jiǎn)到繁、循序漸進(jìn)地學(xué)會(huì)編程。著者在多年教學(xué)實(shí)踐中對(duì)學(xué)生的情況有深入了解和研究,充分考慮學(xué)生的認(rèn)知規(guī)律,構(gòu)建了一個(gè)既科學(xué)又易學(xué)的教材體系,并精心設(shè)計(jì)教材體系,以程序設(shè)計(jì)為主導(dǎo),降低門(mén)檻,分散難點(diǎn),使每一章每一節(jié)的臺(tái)階都不大,很容易循序漸進(jìn),逐步深入。
4. 怎樣使用本書(shū)
(1) 本書(shū)中的內(nèi)容是基本的要求,希望學(xué)生能掌握。在每章的最后有本章小結(jié),歸納本章的要點(diǎn),盡量起到提綱挈領(lǐng)、畫(huà)龍點(diǎn)睛的作用,以加深學(xué)生的學(xué)習(xí)印象。
本書(shū)內(nèi)容較多,希望能安排足夠的學(xué)時(shí)。前面幾章難度較小,后面幾章難度稍大,希望教學(xué)時(shí)能合理安排,統(tǒng)籌兼顧,防止前松后緊。尤其對(duì)指針部分要多花些時(shí)間和精力,使學(xué)生能真正理解并掌握。如果有少數(shù)學(xué)校學(xué)時(shí)實(shí)在不夠,可以對(duì)第8章和第9章的內(nèi)容做簡(jiǎn)單介紹,以使學(xué)生有一個(gè)初步了解,但不要跳過(guò)不學(xué),這樣在以后需要時(shí)再深入學(xué)習(xí)就不會(huì)感到困難。
(2) 本書(shū)便于自學(xué)。具有高中以上文化水平的人,即使沒(méi)有教師講解,也能基本上看懂本書(shū)的大部分內(nèi)容,這樣就有可能做到: 教師少講,指定部分自學(xué),保證上機(jī)實(shí)踐。
(3) 為了滿足學(xué)習(xí)能力較好的學(xué)生進(jìn)一步提高的要求,我們另外出版了《C語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)》(ISBN 9787302556176)一書(shū),其中的第二部分提供了學(xué)習(xí)本書(shū)各章時(shí)應(yīng)進(jìn)一步提高的內(nèi)容,可供師生在教學(xué)中參考。
(4) 在本書(shū)每一章的最后都有習(xí)題,教師可從中選擇一部分要求學(xué)生練習(xí)并完成。習(xí)題包括兩類: 一類是程度適中,大多數(shù)學(xué)生是可以獨(dú)立完成的;另一類是有一定難度,水平較高的學(xué)生可以完成其中一部分。如果學(xué)生感到無(wú)從下手,可以參考《C語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)》的第一部分各章習(xí)題參考解答。在該部分中提供了近100個(gè)問(wèn)題的解答,實(shí)際上是提供了100個(gè)補(bǔ)充例題供師生參考。教師可以從中選一些作為補(bǔ)充例題在課堂上講授,或指定學(xué)生自學(xué),這樣可以進(jìn)一步提高教學(xué)水平。
希望大家善于利用《C語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)》中的習(xí)題解答和提高部分這兩類資源。實(shí)際上我們提供的是一個(gè)多層面的教學(xué)體系,教師可以根據(jù)不同學(xué)校的教學(xué)要求、學(xué)生基礎(chǔ)、學(xué)時(shí)情況等因素,把教材的基本內(nèi)容、習(xí)題解答、提高部分、上機(jī)調(diào)試四者合理選用、有機(jī)組合,組成適合不同人群的教學(xué)方案,以取得更好的效果。
(5) 學(xué)習(xí)程序設(shè)計(jì)必須重視實(shí)踐環(huán)節(jié),至少保證上機(jī)實(shí)踐的時(shí)間不少于課堂講授的1/2,能增多一點(diǎn)時(shí)間更好。可以把課后指定要完成的作業(yè)與上機(jī)調(diào)試程序統(tǒng)一起來(lái),完成作業(yè)后即上機(jī)調(diào)試程序!禖語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)輔導(dǎo)》的第三部分上機(jī)實(shí)踐指南可供上機(jī)實(shí)踐時(shí)參考。
(6) 為了幫助更多的人學(xué)好C語(yǔ)言程序設(shè)計(jì),本書(shū)著者之一、南京大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)部主任金瑩教授以譚浩強(qiáng)所著的《C程序設(shè)計(jì)》一書(shū)為教材制作了慕課(MOOC),在愛(ài)課平臺(tái)可以收看。《C程序設(shè)計(jì)》與本書(shū)的思路、體系和內(nèi)容都是一致的,只是《C程序設(shè)計(jì)》的內(nèi)容更多一些。本書(shū)的讀者可以選擇該慕課學(xué)習(xí)。
本書(shū)主要由譚浩強(qiáng)執(zhí)筆,參加者有還有金瑩教授和具有IT行業(yè)豐富實(shí)踐經(jīng)驗(yàn)的企業(yè)高級(jí)工程師。在本書(shū)編寫(xiě)過(guò)程中還征詢了部分IT行業(yè)專家的意見(jiàn)。本書(shū)的編寫(xiě)和出版得到全國(guó)高校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)高職高專專業(yè)委員會(huì)和清華大學(xué)出版社的大力支持,得以在短時(shí)間內(nèi)順利出版,在此特向所有支持我們的朋友們表示由衷的謝意。
本書(shū)可能仍有缺點(diǎn)和不足,熱切期望得到專家和讀者的批評(píng)指正。
譚浩強(qiáng)
2025年1月1日于清華園
譚浩強(qiáng),男,教授,現(xiàn)擔(dān)任全國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)會(huì)長(zhǎng)、全國(guó)計(jì)算機(jī)應(yīng)用技術(shù)證書(shū)(NIT)考試委員會(huì)主任委員,知名計(jì)算機(jī)教育專家。
第1章程序設(shè)計(jì)和C語(yǔ)言1
1.1計(jì)算機(jī)程序和計(jì)算機(jī)語(yǔ)言1
1.2C語(yǔ)言的發(fā)展過(guò)程2
1.3從最簡(jiǎn)單的C語(yǔ)言程序開(kāi)始3
1.4C語(yǔ)言程序的結(jié)構(gòu)7
1.5運(yùn)行C語(yǔ)言程序的步驟與方法8
1.6算法是程序的靈魂10
1.6.1什么是算法10
1.6.2算法 數(shù)據(jù)結(jié)構(gòu)=程序11
1.6.3怎樣表示一個(gè)算法12
1.7結(jié)構(gòu)化程序設(shè)計(jì)方法18
本章小結(jié)20
習(xí)題21
第2章C語(yǔ)言程序設(shè)計(jì)初步22
2.1順序程序設(shè)計(jì)舉例22
2.2數(shù)據(jù)的類型和表現(xiàn)形式26
2.2.1C語(yǔ)言的數(shù)據(jù)類型26
2.2.2數(shù)據(jù)表現(xiàn)形式常量和變量27
2.3在計(jì)算機(jī)中存儲(chǔ)數(shù)據(jù)28
2.3.1數(shù)據(jù)在計(jì)算機(jī)中以二進(jìn)制形式存儲(chǔ)28
2.3.2位、字節(jié)和地址29
2.4整型數(shù)據(jù)的屬性與運(yùn)算30
2.4.1整型數(shù)據(jù)的分類30
2.4.2整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式31
2.4.3整型數(shù)據(jù)運(yùn)算程序舉例32
2.5實(shí)型數(shù)據(jù)的屬性與運(yùn)算33
2.5.1實(shí)型數(shù)據(jù)的分類33
2.5.2實(shí)型常量的表示形式342.5.3實(shí)型數(shù)據(jù)的存儲(chǔ)形式34
2.6字符型數(shù)據(jù)的屬性與運(yùn)算35
2.6.1字符型數(shù)據(jù)運(yùn)算的簡(jiǎn)單例子35
2.6.2字符常量和字符變量35
2.6.3字符型數(shù)據(jù)的存儲(chǔ)方式36
2.6.4字符型數(shù)據(jù)與整型數(shù)據(jù)在一定條件下可以通用37
2.6.5字符串常量39
2.7運(yùn)算符與表達(dá)式40
2.7.1算術(shù)運(yùn)算符40
2.7.2算術(shù)表達(dá)式41
2.8C語(yǔ)言的語(yǔ)句綜述43
2.9賦值表達(dá)式和賦值語(yǔ)句44
2.9.1賦值表達(dá)式44
2.9.2賦值語(yǔ)句46
2.10數(shù)據(jù)的輸入/輸出47
2.10.1數(shù)據(jù)輸入/輸出的概念47
2.10.2字符數(shù)據(jù)的輸入/輸出48
2.10.3格式的輸入/輸出52
本章小結(jié)59
習(xí)題61
第3章選擇結(jié)構(gòu)程序設(shè)計(jì)63
3.1簡(jiǎn)單的選擇結(jié)構(gòu)程序63
3.2選擇結(jié)構(gòu)中的關(guān)系運(yùn)算65
3.2.1關(guān)系運(yùn)算符及其優(yōu)先次序65
3.2.2關(guān)系表達(dá)式65
3.3選擇結(jié)構(gòu)中的邏輯運(yùn)算66
3.3.1邏輯運(yùn)算符及其優(yōu)先次序67
3.3.2邏輯表達(dá)式68
3.4用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)69
3.4.1if語(yǔ)句的形式69
3.4.2if語(yǔ)句的嵌套71
3.5利用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)72
3.6選擇結(jié)構(gòu)程序綜合舉例75
本章小結(jié)80
習(xí)題80
第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)82
4.1程序中需要用循環(huán)結(jié)構(gòu)82
4.2用while語(yǔ)句和do...while語(yǔ)句實(shí)現(xiàn)循環(huán)82
4.2.1用while語(yǔ)句實(shí)現(xiàn)循環(huán)82
4.2.2用do...while語(yǔ)句實(shí)現(xiàn)循環(huán)84
4.3用for 語(yǔ)句實(shí)現(xiàn)循環(huán)87
4.3.1for語(yǔ)句的一般形式和執(zhí)行過(guò)程87
4.3.2for循環(huán)程序舉例88
4.4循環(huán)的嵌套91
4.5提前結(jié)束循環(huán)92
4.5.1用break語(yǔ)句提前退出循環(huán)92
4.5.2用continue語(yǔ)句提前結(jié)束本次循環(huán)93
4.6幾種循環(huán)的比較95
4.7循環(huán)程序綜合舉例96
本章小結(jié)101
習(xí)題101
第5章利用數(shù)組處理批量數(shù)據(jù)103
5.1為什么要用數(shù)組103
5.2怎樣定義和引用一維數(shù)組103
5.2.1怎樣定義一維數(shù)組104
5.2.2怎樣引用一維數(shù)組的元素104
5.2.3一維數(shù)組的初始化105
5.2.4一維數(shù)組程序舉例106
5.3怎樣定義和引用二維數(shù)組109
5.3.1怎樣定義二維數(shù)組109
5.3.2怎樣引用二維數(shù)組的元素110
5.3.3二維數(shù)組的初始化111
5.3.4二維數(shù)組程序舉例112
5.4字符數(shù)組115
5.4.1怎樣定義字符數(shù)組及對(duì)其初始化115
5.4.2怎樣引用字符數(shù)組116
5.4.3字符串和字符串結(jié)束標(biāo)志117
5.4.4怎樣進(jìn)行字符數(shù)組的輸入/輸出119
5.4.5字符串處理函數(shù)121
5.4.6字符數(shù)組應(yīng)用舉例122
本章小結(jié)125
習(xí)題126
第6章用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)128
6.1函數(shù)是什么128
6.2函數(shù)的定義和調(diào)用130
6.2.1為什么要定義函數(shù)130
6.2.2怎樣定義函數(shù)131
6.2.3怎樣調(diào)用函數(shù)132
6.2.4對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型135
6.3函數(shù)的嵌套調(diào)用137
6.4函數(shù)的遞歸調(diào)用139
6.5數(shù)組作為函數(shù)參數(shù)145
6.5.1用數(shù)組元素作函數(shù)實(shí)參145
6.5.2用數(shù)組名作函數(shù)參數(shù)147
6.6變量的作用域局部變量和全局變量153
6.6.1什么是局部變量153
6.6.2什么是全局變量153
本章小結(jié)156
習(xí)題157
第7章善于使用指針158
7.1什么是指針158
7.2指針變量160
7.2.1使用指針變量訪問(wèn)變量160
7.2.2怎樣定義指針變量161
7.2.3怎樣引用指針變量162
7.2.4指針變量作為函數(shù)參數(shù)164
7.3通過(guò)指針引用數(shù)組170
7.3.1數(shù)組元素的指針170
7.3.2通過(guò)指針引用數(shù)組元素170
7.3.3指針的運(yùn)算172
7.3.4用數(shù)組名作函數(shù)參數(shù)174
7.4通過(guò)指針引用字符串180
7.4.1字符串的表示形式180
7.4.2用字符指針作函數(shù)參數(shù)184
7.4.3字符指針變量和字符數(shù)組的區(qū)別186
本章小結(jié)188
習(xí)題190
第8章根據(jù)需要?jiǎng)?chuàng)建數(shù)據(jù)類型192
8.1定義和引用結(jié)構(gòu)體變量192
8.1.1怎樣創(chuàng)建結(jié)構(gòu)體類型192
8.1.2怎樣定義結(jié)構(gòu)體類型變量194
8.1.3怎樣引用結(jié)構(gòu)體變量195
8.2使用結(jié)構(gòu)體數(shù)組198
8.2.1定義結(jié)構(gòu)體數(shù)組198
8.2.2結(jié)構(gòu)體數(shù)組應(yīng)用舉例200
8.3結(jié)構(gòu)體指針201
8.3.1指向結(jié)構(gòu)體變量的指針201
8.3.2指向結(jié)構(gòu)體數(shù)組的指針203
本章小結(jié)205
習(xí)題206
第9章利用文件保存數(shù)據(jù) 207
9.1C語(yǔ)言文件的有關(guān)概念207
9.1.1什么是文件207
9.1.2文件名208
9.1.3文件的分類208
9.1.4文件緩沖區(qū)209
9.1.5文件類型指針209
9.2文件的打開(kāi)與關(guān)閉210
9.2.1用fopen()函數(shù)打開(kāi)文件210
9.2.2用fclose()函數(shù)關(guān)閉文件212
9.3文件的順序讀/寫(xiě)212
9.3.1向文件讀/寫(xiě)字符212
9.3.2向文件讀/寫(xiě)一個(gè)字符串216
9.3.3文件的格式化讀/寫(xiě)219
9.3.4用二進(jìn)制方式讀/寫(xiě)文件220
本章小結(jié)224
習(xí)題225
附錄A常用字符與ASCII代碼對(duì)照表227
附錄BC語(yǔ)言中的關(guān)鍵字229
附錄C運(yùn)算符和結(jié)合性230
附錄DC語(yǔ)言常用語(yǔ)法提要232
附錄EC語(yǔ)言庫(kù)函數(shù)236
參考文獻(xiàn)242