本書是針對 GESP 一級的 C 大綱量身定制的,以淺顯易懂、細(xì)致入微的語言,介紹 GESP C 一級所涵蓋的內(nèi)容,包括計算機(jī)基礎(chǔ)與編程環(huán)境、計算機(jī)歷史、程序的結(jié)構(gòu)、數(shù)據(jù)類型與變量、輸入輸出語句、分支結(jié)構(gòu)以及循環(huán)結(jié)構(gòu),書中對歷年的考試真題進(jìn)行詳細(xì)解析,并配備大量的習(xí)題供大家練習(xí)和鞏固。本書也包含一些延伸閱讀的內(nèi)容,旨在增加趣味性和擴(kuò)展大家的知識面。
本書的適讀人群為自學(xué)編程的學(xué)生,以及從事中小學(xué)生編程教育的老師,特別適合準(zhǔn)備參加GESP 考試的學(xué)生。
1.全方位覆蓋GESP C 一級大綱,從計算機(jī)基礎(chǔ)到編程實戰(zhàn),一步到位。
2.專為中小學(xué)生量身定制,輕松文風(fēng),揭開編程的神秘面紗。
3.概念先行,實戰(zhàn)演練,讓孩子不僅知其然,更知其所以然。
4.一題多解,難易兼顧,滿足不同學(xué)生的學(xué)習(xí)需求。
5. 精選例題 歷年真題 課后習(xí)題,及時鞏固所學(xué)。
6. 附贈PPT課件與視頻講解,掃碼即得,讓學(xué)習(xí)更輕松。
致大朋友
隨著科技的日益發(fā)達(dá)和計算機(jī)的普及,編程已經(jīng)成為一項的技能。也已經(jīng)發(fā)出了通知,要求把信息技術(shù)課程從興趣課變?yōu)楸匦拚n,并大幅度提升了學(xué)生在編程、算法方面的思維要求?梢哉f,編程教育已經(jīng)得到國家層面和很多有識之士的重視,并且編程學(xué)習(xí)日趨低齡化。
與此同時,中國計算機(jī)學(xué)會發(fā)起并主辦的 GESP,即編程能力等級認(rèn)證(Grade Examination of Software Programming),為青少年計算機(jī)和編程學(xué)習(xí)者提供了一個學(xué)業(yè)能力驗證的平臺。GESP 覆蓋中小學(xué)全學(xué)段,符合條件的青少年均可參加認(rèn)證。GESP 旨在提升青少年的計算機(jī)和編程教育水平,推廣和普及青少年計算機(jī)和編程教育。
獲得 GESP 證書,不僅可以體現(xiàn)學(xué)生的編程水平,而且可以受到各省市重點中學(xué)的歡迎,比如現(xiàn)在很多重點中學(xué)都把獲得 GESP 作為招生條件之一。很多中小學(xué)生也趁此機(jī)會,早早地投入到了編程學(xué)習(xí)中,各種編程培訓(xùn)機(jī)構(gòu)也如雨后春筍般涌現(xiàn)出來,推出各種形式的編程培訓(xùn)課程,筆者也是在這個大潮流中投身到了中小學(xué)生編程教育之中。
在對中小學(xué)生進(jìn)行編程培訓(xùn)的過程中,筆者發(fā)現(xiàn),目前市面上雖然有很多 C 書籍,但是跟 GESP 完全匹配的幾乎沒有。GESP 的考試內(nèi)容覆蓋面很廣,從計算機(jī)發(fā)展歷史到計算機(jī)組成、計算機(jī)工作原理、計算機(jī)網(wǎng)絡(luò),從編程到算法、流程圖、數(shù)據(jù)編碼,甚至還涉及GESP本身的一些考試規(guī)則等,可以說包羅萬象、一應(yīng)俱全,但另一方面又都不是很深。
而目前市面上的 C 書籍,不僅沒有涵蓋那么多編程語言之外的東西,而且沒有跟 GESP的 8 個等級適配,有些書一本就覆蓋了 GESP 一級到五級甚至六級的內(nèi)容。因而,筆者深刻感受到需要一套與 GESP 完全適配的書籍的重要性。
另外,在培訓(xùn)期間,筆者也意識到,針對成年人的教課方式不能照搬到中小學(xué)生身上。因為很多知識點是存在依賴關(guān)系的,一般成年人的教課方式都是遵循點線面的方式并且按照邏輯順序來的,先講述各個概念,再講解它們能干什么,然后講解在實際生活中的應(yīng)用。比如,對于數(shù)據(jù)類型、變量、算術(shù)運(yùn)算,按照邏輯順序應(yīng)該先講解數(shù)據(jù)類型,然后講解變量,再講解算術(shù)運(yùn)算,因為要講解算術(shù)運(yùn)算,就離不開變量,因為程序中的算術(shù)運(yùn)算都是對變量的運(yùn)算;而要講解變量又離不開數(shù)據(jù)類型,因為變量聲明時必須指定數(shù)據(jù)類型。
在筆者的第一期課程中,就采取了這種方式。但是發(fā)現(xiàn)小朋友們聽得云里霧里。數(shù)據(jù)類型對大家來說是個全新的概念,整型和長整型到底有啥區(qū)別,單精度和雙精度又有什么不同?你跟他們講所占的空間不同,存儲方式不同,大家也是似懂非懂。然后再講變量,變量到底是個什么概念,為什么變量要有數(shù)據(jù)類型?中小學(xué)生由于知識和思維的局限,對這些概念很難掌握。加上有些孩子同時在學(xué)習(xí) Scratch 和 Python,不同的語言定義的數(shù)據(jù)類型并不一樣,很多概念堆在一起就會打架。
為此,在第二期課程中,筆者放棄了這種傳統(tǒng)的點線面的方式,先不講數(shù)據(jù)類型和變量,一上來就先講算術(shù)運(yùn)算,需要定義變量的地方就先讓大家照抄。因為編程的核心價值是算法,而算法的基礎(chǔ)是運(yùn)算,NOI 最終考查的也是算法,所以運(yùn)算才是重點,數(shù)據(jù)類型和變量都是輔助性質(zhì)的東西。等到基本的運(yùn)算講完以后,再慢慢引入數(shù)據(jù)類型和變量的概念,大家就容易理解多了。
還有一個例子是關(guān)于布爾類型、邏輯表達(dá)式以及分支語句。分支語句需要使用邏輯表達(dá)式,而邏輯表達(dá)式的值是布爾類型的,所以要嚴(yán)格按照順序來講,則必須先講布爾類型,然后講邏輯表達(dá)式,再講分支語句。但是布爾類型太抽象了,如果邏輯表達(dá)式不結(jié)合具體例子,那么也講不明白。所以在講解時,筆者先講分支語句,即先講應(yīng)用,再講邏輯表達(dá)式,最后講布爾類型。
還有很多其他的例子,這里不一一列舉。筆者想說的是,為了讓這些內(nèi)容便于中小學(xué)生理解,筆者花了大量的心思,有時候一節(jié)一小時的課程,準(zhǔn)備講義要花好幾天,要反復(fù)修改好幾次。但是,當(dāng)發(fā)現(xiàn)這樣的講解小朋友們更容易聽得懂時,感覺一切付出都是值得的。
中小學(xué)生是祖國的未來和希望,培養(yǎng)中小學(xué)生是整個社會的責(zé)任。筆者覺得,自己在中小學(xué)生編程培訓(xùn)方面的經(jīng)驗和體會不應(yīng)該自己獨有,應(yīng)該分享給全天下從事中小學(xué)生編程培訓(xùn)的老師。于是,筆者把所有的講義整理成文字,每級一本或每兩級一本,形成一個系列,希望能給大家?guī)韼椭?br />基于此,這個系列最大的特點是與 GESP 完全適配,這也是與其他 C 書籍最大的區(qū)別。這個系列嚴(yán)格按照 GESP 的 8 個等級以及歷年的考試真題來安排內(nèi)容,這句話有兩個含義。第一,內(nèi)容的廣度跟 GESP 大綱匹配,比如一級里講到了計算機(jī)歷史、計算機(jī)組成部分,二級里會講到網(wǎng)絡(luò)基礎(chǔ)和流程圖等。第二,它講解的深度跟 GESP 大綱匹配,同時又稍許超前一點點。這是因為,GESP 的考試經(jīng)常會有一些超綱的題目,比如說數(shù)組,在大綱里是屬于三級的,但在二級的考題里也有一些數(shù)組的影子,這就使得本書中的有些主題要在不同的級別里講解兩次,第一次比較淺,第二次比較深。
本書涵蓋的內(nèi)容
本書是這個系列中的第一本,涵蓋 GESP C 一級的大綱,包括:
? 計算機(jī)基礎(chǔ)與編程環(huán)境。
? 計算機(jī)歷史。
? 變量的定義與使用。
? 基本數(shù)據(jù)類型(整型、浮點型、字符型、布爾型)。
? 控制語句結(jié)構(gòu)(順序、循環(huán)、選擇)。
? 基本運(yùn)算(算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算)。
? 輸入輸出語句。
本書分成 4 部分。第一部分編程基礎(chǔ),內(nèi)容包括 GESP 介紹、二進(jìn)制基礎(chǔ)、計算機(jī)硬件和發(fā)展歷史、程序的概念和編程的流程等;第二部分算術(shù)運(yùn)算,講解數(shù)據(jù)類型、變量的定義與使用、各種算術(shù)運(yùn)算、輸入輸出語句、位數(shù)拆分、時間轉(zhuǎn)換等;第三部分分支結(jié)構(gòu),介紹 if-else 語句、switch 語句、邏輯運(yùn)算符、數(shù)據(jù)類型轉(zhuǎn)換,以及它們在奇偶數(shù)判斷、k幸運(yùn)數(shù)判斷、回文數(shù)判斷、水仙花數(shù)判斷、閏年判斷、優(yōu)等生判斷、特長生判斷、凱撒加密、公約數(shù)、公倍數(shù)等方面的應(yīng)用;第四部分循環(huán)語句,講解 for 循環(huán)、while 循環(huán)、do-while循環(huán),以及它們在素數(shù)判斷、完全平方數(shù)判斷、數(shù)列求和、冪運(yùn)算、階乘運(yùn)算等方面的應(yīng)用。本書的特點
(1)與 GESP 一級的考試大綱完全適配,前面介紹過這是本系列最大的特點。
(2)文風(fēng)輕松、接地氣,深入為什么的層面。本書對各種概念和語法娓娓道來,就像和人聊天的感覺。不像有些書籍只是把概念往那兒一放,本書仔細(xì)地講解了為什么需要引入這些概念,比如為什么要有數(shù)據(jù)類型,為什么需要定義變量,為什么需要輸出語句,為什么需要布爾數(shù)據(jù)類型,等等,確保大家不但知其然,而且知其所以然。
(3)數(shù)學(xué)知識先解釋。在講解各種應(yīng)用的時候,自然離不開一些數(shù)學(xué)知識,比如什么叫素數(shù),什么叫完全平方數(shù),什么叫平方根。為了兼顧不同年齡段的學(xué)生,本書對所有的數(shù)學(xué)知識都先解釋一遍,并反復(fù)舉例。
(4)實戰(zhàn)演練。在講解各種語法知識時,會通過大量的例題和練習(xí)來幫助消化,其中很多都是 GESP 真題,幾乎涵蓋了 GESP 自推出以來所有的考題。
(5)一題多解。本書對同一個問題有時會給出多種解法,并對有些解法進(jìn)行非常詳細(xì)的解釋,比較它們的優(yōu)劣,這些解釋可能會用到一些大家還沒有學(xué)到的概念,讀者可以根據(jù)自己的實際情況選擇閱讀或跳過。比如素數(shù)的判斷,給出了 3 份代碼,前兩份效率差,但易于理解,第三份效率高,但用到了平方根的概念,低年級的小朋友理解起來就有點困難,這時就可以跳過第三份代碼。
(6)難易兼存。每章后面都有很多作業(yè),這些作業(yè)有難有易,這樣各個年齡段的孩子都能各取所需,避免有些孩子望而生畏,而另一些孩子又覺得過于簡單。本書中的編程題,題面描述一般都很簡單,這一方面是為了節(jié)約版面,另一方面也是為了讓大部分孩子都能理解。但 GESP 的考題(包括其他信息學(xué)的競賽)題面描述都很長,非?简灤蠹业拈喿x理解能力。為了盡量讓準(zhǔn)備參加 GESP 考試的孩子適應(yīng) GESP 的考試模式,本書中的部分題目也采用了場景式的題目描述,即先構(gòu)造一個應(yīng)用場景,再延伸出一道題目,讓題目看起來很復(fù)雜。
(7)例題的連貫性。隨著知識點的深入,例題會越來越難,但大部分書中的例題是互不相關(guān)的。筆者覺得,雖然知識點越來越難,但它們是連貫的,那么例題是不是也可以連貫起來呢?在筆者的精心構(gòu)思下,創(chuàng)造出了一個連貫的主題重點中學(xué)的招生政策。這個政策開始為優(yōu)等生策略,即各門功課都很優(yōu)秀,解題時使用邏輯運(yùn)算符與(&&);然后推出特長生策略,即只要有一門特別優(yōu)秀就行,解題時使用邏輯運(yùn)算符或(||);然后推出組合招生政策,即優(yōu)等生和特長生二選一,解題時需要同時使用邏輯運(yùn)算符與和或;接著又推出招生政策 2.0,加入新的課程,條件更加復(fù)雜,避免了跛腳(即有一門課特別差)的現(xiàn)象,代碼中需要用到各種邏輯運(yùn)算符以及隱式類型轉(zhuǎn)換;最后又推出招生政策 3.0,不是看一次成績,而是看幾次的平均成績,這時就需要在原來的基礎(chǔ)上添加循環(huán)。就這樣,通過一個招生的主題,把所學(xué)到的知識全部連貫在了一起。
本書的適用人群
本書是為 GESP 量身定制的,因而特別適合準(zhǔn)備參加 GESP 等級考試的學(xué)生,以及從事 GESP 編程培訓(xùn)的老師。同時由于本書結(jié)構(gòu)上的安排,對于那些不以考試或競賽為目的的學(xué)生來說,也是一個很好的選擇。對于編程老師,每章基本上對應(yīng)兩課時(按 1 小時 1 課時計算),對于自學(xué)編程的學(xué)生,則可根據(jù)自己的實際情況動態(tài)調(diào)整進(jìn)度。
除課后作業(yè)外,書中有很多例題和練習(xí),分成 3 類:
【例題】:這類題目是正文內(nèi)容的一部分,以老師講解或者自己看書為主,并不要求大家自己解答。
【真題解析】:這類題目跟例題一樣,以老師講解為主,區(qū)別在于這些題目是以往考試的真題。
【課堂練習(xí)】:這類題目是給學(xué)生練習(xí)的,學(xué)生先自己做,然后老師再講解答案。對于自學(xué)的學(xué)生,也應(yīng)該先自己嘗試解答,然后再看答案。
所有的課后作業(yè)都附帶了答案,在本書的最后。
本書另外附帶 PPT 課件和視頻講解,供大家參考,掃描封底的本書資源二維碼即
可獲得這些資源。
致謝
特別感謝中國計算機(jī)學(xué)會 GESP 組委會主席王延平教授、《軟件簡史》和《軟件調(diào)試》作者暨格蠹科技創(chuàng)始人張銀奎老師、Boolan 首席咨詢師及 C 專家吳詠煒老師,感謝你們在百忙之中為本書撰寫推薦語,你們的專業(yè)認(rèn)可給予我莫大的鼓舞。
誠摯感謝清華大學(xué)出版社編校團(tuán)隊,感謝你們的專業(yè)支持,使本書得以順利出版;特別感謝王中英編輯,您不厭其煩地協(xié)助文字潤色、圖片編輯和版面設(shè)計,為本書的品質(zhì)提供了堅實保障。
衷心感謝國網(wǎng)湖南省岳陽公司高級工程師余捻宏老師,是您的啟發(fā)和鼓勵,讓我萌生了將教學(xué)心得整理成書的想法。感謝學(xué)生家長趙娟、朱博淵、阮小芬、黃婷婷、嚴(yán)翠紅、羅文浩、商晶瑩等,感謝你們對我編程培訓(xùn)工作的鼎力支持,感謝你們愿意與我分享孩子成長的喜悅和生活點滴。
還要感謝我的妻子陶娟女士和我的兒子,感謝他們在生活中的陪伴,感謝妻子為我做默默無聲的后勤工作,才讓本書能夠盡早跟大家見面。祝愿我們永遠(yuǎn)幸福、健康、快樂。
書中引用的真題解析,都來自 CCF 歷年的 GESP 試卷,書中部分圖片來自網(wǎng)絡(luò),在此一并表示感謝!
最后,由于時間倉促,書中難免有錯誤疏漏之處,還請讀者批評指正。
沈根成
2025 年 4 月 18 日于上海聯(lián)航路盛格塾
致小朋友
小朋友們,大家好!你聽說過編程嗎?編程就是在電腦上編寫代碼來解決實際問題,比如算一算你今年一共收了多少壓歲錢,或者你這次考試,各門功課加起來一共考了多少分,或者如果你很厲害,還可以編一個小游戲。想一想吧,你不再需要拿出紙和筆,把數(shù)據(jù)記錄下來,列個豎式來計算。你只要打開電腦,運(yùn)行你編寫的程序,把數(shù)據(jù)輸入進(jìn)去,它就能幫你計算出結(jié)果。而且你只要編寫一次,以后可以反復(fù)使用。這是多么神奇和有趣的事情。
實際上,上面所列舉的只是兩個很簡單的例子。編程的應(yīng)用非常廣泛,如今我們的生活早就離不開程序了。我們跟別人聊天溝通使用的微信是一個程序,我們在網(wǎng)上購物時進(jìn)入的淘寶網(wǎng)站是一種程序,我們寫文章使用的 Word、做講義使用的 PPT 都是程序,甚至在我們的各種家電設(shè)備中,都有小程序存在。另外,我們?nèi)绻胍岆娔X模擬人類來思考,更是離不開程序。
編程不光神奇和有趣,學(xué)習(xí)編程還有很多好處。編程可以讓大家養(yǎng)成嚴(yán)謹(jǐn)?shù)牧?xí)慣,編寫代碼時,要求大家嚴(yán)格按照代碼規(guī)范來書寫,不可以有半點馬虎。編程能提高大家的抽象思維和想象的能力,編程時我們往往要在腦海里構(gòu)思一幅圖畫,想清楚代碼的結(jié)構(gòu),使用什么算法等。編程也能提高大家的總結(jié)能力和舉一反三的能力,通過分析不同題目的代碼,找出其中的規(guī)律,可以總結(jié)出一個結(jié)論,進(jìn)而就能解決類似的問題。編程還能提高大家的創(chuàng)新能力,通過對同一道題目采用不同的解法,打開我們的思路,讓我們的大腦變得更加靈活。
此外,編程對小朋友們的升學(xué)也有實實在在的好處。通過學(xué)習(xí)編程,去參加編程能力等級認(rèn)證(即 GESP)考試,獲得 GESP 證書,就可以輕松進(jìn)入你喜歡的重點中學(xué)。如果沿著這條路走下去,后續(xù)參加全國青少年信息學(xué)奧林匹克競賽(NOI)并獲獎,那么像北大、清華這樣的高等名校就會向你拋來橄欖枝。
編程有好幾種語言可以選擇,到底應(yīng)該選擇哪種語言呢?其實這并沒有絕對的答案,GESP 一~四級的認(rèn)證可以選擇 3 種語言:Scratch、Python、C 。Scratch 有點類似搭積木,在游戲中學(xué)習(xí)編程,適合低年級的小朋友。但是 GESP 五~八級就沒有 Scratch 了,只剩Python 和 C ,其中 Python 簡單易學(xué),初學(xué)者容易上手。但是到了 NOI 競賽,又只能選擇 C 了。所以綜合考慮下來,筆者覺得不如一開始就學(xué)習(xí) C 。
那么,如何才能學(xué)好 C 編程呢?一本好的教材是必要的。雖然目前市面上有不少關(guān)于少兒編程的書籍,但是完全跟 GESP 考試大綱吻合的還沒有。本書是完全按照 GESP考試大綱編排的教程,涵蓋了 GESP 一級 C 的所有內(nèi)容。本書在講解各個概念時,盡量使用小朋友們能夠看得懂的語言,并且列舉了大量的例子。本書有大量的真題解析,這些真題全部來自 GESP 的試卷。本書也配有很多課后作業(yè),這些作業(yè)難度有深有淺,大家可以根據(jù)自己的實際情況來選擇。如果小朋友們想自學(xué)的,本書也附帶視頻講解,只需掃描封底的二維碼就可以找到視頻鏈接。
本書還有一個特點,就是大部分章節(jié)的最后都會有延伸閱讀,這些延伸閱讀的內(nèi)容大多是一些有趣的小故事,可以幫助大家理解本章學(xué)習(xí)的內(nèi)容,同時拓寬大家的視野。比如在講解閏年判斷的時候,延伸閱讀部分就講解了閏年的形成原因;在講解水仙花數(shù)判斷的時候,延伸閱讀部分就介紹了自冪數(shù)的知識。
最后,希望小朋友們喜歡這本書,希望每個小朋友都能成為編程高手!
沈根成
2025 年 4 月 18 日于上海聯(lián)航路盛格塾
的能力,成為人工智能時代有競爭力的數(shù)字化人才。沈根成 畢業(yè)于復(fù)旦大學(xué)數(shù)學(xué)系,碩士學(xué)歷,曾在宏碁、緯創(chuàng)、惠普、微福思擔(dān)任高級程序員和部門經(jīng)理職位,精通C、C 、.Net 等多種編程語言,F(xiàn)從事青少年編程培訓(xùn)工作,致力于培養(yǎng)出一批優(yōu)秀的少年程序員,幫助他們掌握扎實的編程基礎(chǔ),培養(yǎng)創(chuàng)新思維和解決問題
第一部分? 編程基礎(chǔ)
第 1 章 GESP 介紹與二進(jìn)制 / 2
1.1 GESP 介紹 / 2
1.1.1 什么是 GESP / 2
1.1.2 GESP 的語言和級別 / 3
1.1.3 GESP 的考試頻次和題目安排 / 4
1.1.4 為什么要參加 GESP 認(rèn)證考試 / 4
1.2 二進(jìn)制 / 4
1.2.1 感受二進(jìn)制 / 5
1.2.2 數(shù)碼和基數(shù) / 5
1.2.3 二進(jìn)制表示 / 6
1.2.4 二進(jìn)制轉(zhuǎn)十進(jìn)制 / 6
1.2.5 常見的二進(jìn)制數(shù) / 8
1.3 八進(jìn)制和十六進(jìn)制 / 9
課后作業(yè) / 9
延伸閱讀:二進(jìn)制數(shù)是一類特殊的數(shù)嗎 / 10
第 2 章 計算機(jī)基礎(chǔ)知識 / 11
2.1 計算機(jī)組成部分 / 11
2.1.1 五大部件 / 11
2.1.2 圖靈機(jī)模型 / 13
2.1.3 馮·諾依曼體系結(jié)構(gòu) / 14
2.2 計算機(jī)的發(fā)展歷史 / 14
2.2.1 機(jī)械計算器 / 15
2.2.2 電子計算機(jī) / 15
2.2.3 馮·諾依曼體系結(jié)構(gòu)的計算機(jī) / 15
2.3 計算機(jī)的數(shù)據(jù)存儲 / 16
課后作業(yè) / 17
延伸閱讀:什么叫便攜性 / 18
第 3 章 程序的基本概念 / 19
3.1 軟件的概念 / 19
3.1.1 軟件的分類 / 19
3.1.2 軟件和程序的區(qū)別 / 20
3.1.3 軟件不能干什么 / 21
3.2 程序設(shè)計語言 / 22
3.2.1 機(jī)器語言 / 23
3.2.2 匯編語言 / 23
3.2.3 高級語言 / 23
3.3 編寫程序的過程 / 24
3.3.1 編輯代碼 / 24
3.3.2 編譯 / 25
3.3.3 運(yùn)行 / 25
3.3.4 調(diào)試 / 25
3.4 集成開發(fā)環(huán)境 / 26
課后作業(yè) / 27
延伸閱讀:聊天軟件為什么能叫機(jī)器人 / 27
延伸閱讀:算盤為什么不是現(xiàn)代計算機(jī)的鼻祖 / 27
第 4 章 程序基本語句 / 29
4.1 使用 DevC / 29
4.1.1 打開 DevC / 30
4.1.2 創(chuàng)建文件 / 30
4.1.3 保存文件 / 31
4.1.4 輸入代碼 / 31
4.1.5 編譯代碼 / 31
4.1.6 運(yùn)行程序 / 32
4.2 分析代碼 / 32
4.2.1 頭文件 / 32
4.2.2 名字空間 / 33
4.2.3 主函數(shù) / 33
4.2.4 輸出語句 / 34
4.2.5 返回語句 / 34
4.2.6 字符串 / 34
4.2.7 語法規(guī)則 / 35
4.3 輸出語句 / 35
4.3.1 基本用法 / 35
4.3.2 換行符 / 35
4.3.3 鏈?zhǔn)秸{(diào)用 / 36
4.3.4 輸出算式的值 / 36
4.4 注釋語句 / 37
課后作業(yè) / 38
延伸閱讀:cout 是一個函數(shù)嗎 / 38
第 5 章 體驗編程流程 / 39
5.1 程序解決問題的步驟 / 40
5.2 解答編程題的流程 / 40
5.2.1 審題 / 41
5.2.2 確定算法和程序結(jié)構(gòu) / 41
5.2.3 用自然語言描述代碼 / 41
5.2.4 寫代碼 / 42
5.2.5 用樣例數(shù)據(jù)測試 / 43
5.2.6 調(diào)試 / 43
5.3 代碼解釋 / 43
5.4 常見的編譯錯誤 / 44
課后作業(yè) / 45
編程基礎(chǔ)總結(jié) / 46
課后作業(yè) / 49
第二部分? 算術(shù)運(yùn)算
第 6 章 基本算術(shù)運(yùn)算 / 51
6.1 加減乘除余 / 51
6.2 詳解除法運(yùn)算 / / 54
6.3 詳解求余運(yùn)算 % / 54
6.4 / 和 % 的應(yīng)用 / 55
課后作業(yè) / 56
第 7 章 基本數(shù)據(jù)類型 / 57
7.1 數(shù)值型數(shù)據(jù)類型 / 57
7.1.1 整型 / 58
7.1.2 長整型 / 58
7.1.3 單精度型 / 59
7.1.4 雙精度型 / 59
7.1.5 浮點數(shù)相除 / 59
7.1.6 如何選擇類型 / 59
7.2 非數(shù)值型數(shù)據(jù)類型 / 60
7.2.1 字符型 / 60
7.2.2 布爾型 / 62
7.3 常數(shù)的數(shù)據(jù)類型 / 62
課后作業(yè) / 63
延伸閱讀:計算機(jī)中的實數(shù) / 64
第 8 章 運(yùn)算規(guī)則 / 65
8.1 表達(dá)式 / 65
8.2 優(yōu)先級 / 65
8.3 類型自動轉(zhuǎn)換 / 67
8.4 sizeof 操作符 / 68
課后作業(yè) / 69
延伸閱讀:測試樣例數(shù)據(jù)的重要性 / 69
第 9 章 變量的定義與使用 / 71
9.1 變量的定義 / 71
9.1.1 什么是變量、常量、常數(shù) / 71
9.1.2 定義變量 / 72
9.1.3 變量命名規(guī)則 / 73
9.1.4 關(guān)鍵字 / 73
9.1.5 定義常量 / 73
9.2 變量的使用 / 74
9.2.1 賦值語句 / 74
9.2.2 變量的初始化 / 75
9.2.3 再談賦值語句 / 76
課后作業(yè) / 77
第 10 章 輸入語句 / 78
10.1 cin(C 風(fēng)格) / 78
10.1.1 基本語法 / 78
10.1.2 串聯(lián)使用 >> / 78
10.1.3 數(shù)據(jù)不一致的情形 / 79
10.2 scanf(C 風(fēng)格) / 80
10.3 通用頭文件 / 81
課后作業(yè) / 82
延伸閱讀:時刻和時間段的區(qū)別 / 83
第 11 章 輸出語句 / 85
11.1 輸出語句的作用 / 85
11.2 cout(C 風(fēng)格) / 86
11.2.1 基本語法 / 86
11.2.2 串聯(lián)使用 << / 86
11.2.3 字符串 / 87
11.3 printf(C 風(fēng)格) / 87
11.3.1 格式符:%d / 88
11.3.2 格式符:%c / 89
11.3.3 格式符:%f / 90
11.3.4 多個格式符一起使用 / 90
11.3.5 格式符:%% / 91
11.3.6 進(jìn)制格式符 / 91
11.4 特殊符號 / 92
11.5 臨時變量 / 93
11.6 使用輸出語句調(diào)試 / 94
課后作業(yè) / 95
第 12 章 高級算術(shù)運(yùn)算 / 96
12.1 復(fù)合賦值運(yùn)算符 / 96
12.2 自增 / 自減運(yùn)算符 / 97
12.3 賦值語句串聯(lián) / 98
12.4 逗號運(yùn)算符 / 100
12.5 變量重復(fù)使用 / 101
課后作業(yè) / 101
延伸閱讀:后 和后 -- / 102
第 13 章 算術(shù)運(yùn)算應(yīng)用 / 104
13.1 位數(shù)拆分 / 104
13.2 時間轉(zhuǎn)換 / 105
13.3 最小的倍數(shù) / 107
課后作業(yè) / 108
算術(shù)運(yùn)算總結(jié) / 110
課后作業(yè) / 115
第三部分? 分支語句
第 14 章 if-else 分支語句 / 118
14.1 分支語句簡介 / 119
14.2 關(guān)系運(yùn)算符 / 120
14.3 關(guān)系表達(dá)式 / 120
14.4 單分支、雙分支和多分支 / 121
14.5 問號表達(dá)式 / 124
14.6 中途退出程序 / 124
14.7 延遲定義變量 / 125
課后作業(yè) / 126
延伸閱讀:能使用中文編寫代碼嗎 / 126
第 15 章 分支語句應(yīng)用以及邏輯運(yùn)算符與 / 128
15.1 最值計算 / 128
15.2 水仙花數(shù)判斷 / 129
15.3 優(yōu)等生判斷 / 130
15.4 邏輯運(yùn)算符:與 / 130
15.5 回文數(shù)判斷 / 131
課后作業(yè) / 132
延伸閱讀:有趣的自冪數(shù) / 133
第 16 章 邏輯運(yùn)算符或和非 / 134
16.1 k 幸運(yùn)數(shù)判斷 / 134
16.2 邏輯運(yùn)算符:或 / 134
16.3 特長生判斷 / 135
16.4 邏輯運(yùn)算符:非 / 136
16.5 邏輯運(yùn)算符總結(jié) / 136
16.5.1 優(yōu)先級 / 136
16.5.2 短路特性 / 137
16.6 閏年判斷 / 138
課后作業(yè) / 139
延伸閱讀:閏年是怎么形成的 / 139
第 17 章 布爾數(shù)據(jù)類型 / 141
17.1 組合招生政策 / 141
17.2 布爾型(bool) / 142
17.3 bool 變量的值 / 142
17.4 邏輯表達(dá)式 / 142
17.5 非 0 即為真 / 144
課后作業(yè) / 145
第 18 章 數(shù)據(jù)類型轉(zhuǎn)換 / 147
18.1 強(qiáng)制類型轉(zhuǎn)換 / 147
18.1.1 強(qiáng)制類型轉(zhuǎn)換與精度無關(guān) / 148
18.1.2 強(qiáng)制類型轉(zhuǎn)換會丟失數(shù)據(jù) / 149
18.2 隱式類型轉(zhuǎn)換 / 149
18.2.1 賦值時的隱式類型轉(zhuǎn)換 / 149
18.2.2 表達(dá)式中的隱式類型轉(zhuǎn)換 / 152
18.2.3 兩種類型的轉(zhuǎn)換同時發(fā)生 / 154
18.2.4 轉(zhuǎn)換發(fā)生的時機(jī) / 154
課后作業(yè) / 155
第 19 章 分支結(jié)構(gòu)應(yīng)用 / 157
19.1 字母大小寫轉(zhuǎn)換 / 157
19.2 字母循環(huán)平移加密 / 158
19.3 數(shù)字字符轉(zhuǎn)數(shù)值 / 160
19.4 招生政策 2.0 / 162
課后作業(yè) / 163
延伸閱讀:為什么需要數(shù)字字符 / 164
第 20 章 switch 分支語句 / 165
20.1 switch 的一般寫法 / 166
20.2 省略 break / 168
20.3 switch 應(yīng)用 / 169
20.3.1 求每月天數(shù) / 170
20.3.2 求獎金數(shù)目 / 171
課后作業(yè) / 172
分支語句總結(jié) / 173
課后作業(yè) / 177
第四部分? 循環(huán)語句
第 21 章 for 循環(huán)語句 / 179
21.1 循環(huán) / 179
21.2 for 循環(huán)語句的語法規(guī)則 / 179
21.3 循環(huán)變量的作用范圍 / 181
21.4 for 循環(huán)應(yīng)用:求個數(shù) / 182
課后作業(yè) / 184
第 22 章 for 循環(huán)基本應(yīng)用 / 185
22.1 求和 / 185
22.2 求冪運(yùn)算 / 186
22.3 求約數(shù) / 186
22.4 求最值 / 189
課后作業(yè) / 190
第 23 章 for 循環(huán)特性 / 191
23.1 不同的循環(huán)方式 / 191
23.1.1 跳躍循環(huán) / 191
23.1.2 遞減循環(huán) / 192
23.1.3 指數(shù)循環(huán) / 193
23.2 省略表達(dá)式 / 193
23.2.1 省略表達(dá)式 1 / 193
23.2.2 省略表達(dá)式 2 / 194
23.2.3 省略表達(dá)式 3 / 195
23.2.4 同時省略 / 195
23.3 循環(huán)體中改變循環(huán)變量的值 / 195
23.4 多個循環(huán)變量 / 196
23.5 一次都不執(zhí)行 / 196
23.6 空循環(huán) / 197
23.7 死循環(huán) / 197
23.8 break 和 continue / 198
課后作業(yè) / 198
第 24 章 for 循環(huán)高級應(yīng)用 / 200
24.1 素數(shù)判斷 / 200
24.1.1 常見代碼 / 200
24.1.2 第一次優(yōu)化 / 201
24.1.3 第二次優(yōu)化 / 203
24.2 完全平方數(shù)判斷 / 205
24.3 使用 break 省略表達(dá)式 2 / 207
24.4 break 的應(yīng)用 / 207
課后作業(yè) / 208
延伸閱讀:世界上存在最大的素數(shù)嗎 / 209
第 25 章 驗證和調(diào)試代碼 / 210
25.1 用特殊數(shù)據(jù)測試 / 210
25.1.1 邊界數(shù)據(jù) / 211
25.1.2 完全平方數(shù) / 212
25.2 減少循環(huán)的次數(shù) / 213
25.3 使用輸出語句調(diào)試 / 213
課后作業(yè) / 214
第 26 章 while 和 do-while 循環(huán) / 215
26.1 while 循環(huán) / 215
26.2 求階乘 / 218
26.3 do-while 循環(huán) / 218
26.4 是使用 for 循環(huán)還是 while 循環(huán) / 220
課后作業(yè) / 220
第 27 章 while 循環(huán)應(yīng)用 / 222
27.1 倒著顯示各個位數(shù) / 222
27.2 時間輪轉(zhuǎn) / 223
27.3 勝利的獎賞 / 225
課后作業(yè) / 226
延伸閱讀:國王的獎賞 / 226
循環(huán)語句總結(jié) / 228
課后作業(yè) / 232
綜合練習(xí) / 233
課后作業(yè)參考答案 / 240