c語(yǔ)言課本習(xí)題及解答課后習(xí)題答案_第1頁(yè)
c語(yǔ)言課本習(xí)題及解答課后習(xí)題答案_第2頁(yè)
c語(yǔ)言課本習(xí)題及解答課后習(xí)題答案_第3頁(yè)
c語(yǔ)言課本習(xí)題及解答課后習(xí)題答案_第4頁(yè)
c語(yǔ)言課本習(xí)題及解答課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩155頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一篇 習(xí)題及解答本篇按教材上的章目,先對(duì)各章所附的習(xí)題進(jìn)行解答,給出參考答案;然后按各章內(nèi)容給出各類課外習(xí)題,并對(duì)習(xí)題進(jìn)行了解答,給出參考答案;接著編寫了假期作業(yè)并進(jìn)行了解答,供大家參考選用;最后還有4套綜合性的模擬試卷及解答,供我們?cè)趯W(xué)習(xí)中檢測(cè)自己的學(xué)習(xí)效果。 本篇所有內(nèi)容中,涉及到編程、設(shè)計(jì)、算法等問(wèn)題時(shí),可能不會(huì)有唯一解,給出的解也不一定是最好的解法。所以對(duì)這些答案只能用于參考,啟發(fā)我們的思維。第一章 概論教材上習(xí)題一解答1什么是結(jié)構(gòu)化程序設(shè)計(jì)方法?參考答案:結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化。結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思路是,把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分階段進(jìn)行,每個(gè)階段處

2、理的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。其具體做法是:自頂向下,逐步求精,模塊化設(shè)計(jì)和結(jié)構(gòu)化編碼。2什么是面向?qū)ο蟪绦蛟O(shè)計(jì)方法?參考答案:面向?qū)ο蟮脑O(shè)計(jì)方法, 是在近年來(lái)、軟件工程研究領(lǐng)域中有益成果的基礎(chǔ)上發(fā)展起來(lái)的一種軟件設(shè)計(jì)方法。它集抽象性、封閉性、繼承性、多態(tài)性于一體,將傳統(tǒng)軟件中的數(shù)據(jù)和操作, 組合成易于賦予語(yǔ)義的對(duì)象, 使軟件設(shè)計(jì)中人們普遍遵循的模塊化、信息隱藏、抽象、代碼共享等思想,在面向?qū)ο笳Z(yǔ)言機(jī)制的幫助下, 得以充分實(shí)現(xiàn)。3c語(yǔ)言是在什么語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的?當(dāng)初設(shè)計(jì)它的目的是什么?參考答案:1971 年, ken thompson 在 pdp-11/20 計(jì)算機(jī)上實(shí)現(xiàn)了

3、 b 語(yǔ)言, 并用該語(yǔ)言書寫了系統(tǒng)軟件 unix 操作系統(tǒng)和一些應(yīng)用程序。 為了很好地適應(yīng)系統(tǒng)程序設(shè)計(jì)的要求,在19721973年間,貝爾實(shí)驗(yàn)室的dennis m. ritchie在b語(yǔ)言的基礎(chǔ)上再發(fā)展,重新設(shè)計(jì)了一種新的、通用程序設(shè)計(jì)語(yǔ)言,取bcpl的第二個(gè)字母c,稱為c語(yǔ)言?,F(xiàn)在人們一般都認(rèn)為c語(yǔ)言是美國(guó)貝爾實(shí)驗(yàn)室的d. m. ritchie在1972年設(shè)計(jì)實(shí)現(xiàn)的。unix 操作系統(tǒng)提供一種高級(jí)語(yǔ)言工具,但c語(yǔ)言本身并沒有被束縛在任何特定的操作系統(tǒng)和特定的硬件之上,它具有良好的可移植性。4與匯編語(yǔ)言相比,c語(yǔ)言有那些特點(diǎn)?參考答案:c語(yǔ)言是高級(jí)程序設(shè)計(jì)語(yǔ)言中的一種“低級(jí)”語(yǔ)言,它與系統(tǒng)和機(jī)

4、器的緊密程度使其幾乎可以替代匯編語(yǔ)言。通常,只有像匯編語(yǔ)言才具備的能力,c 語(yǔ)言中都有,如位操作、直接訪問(wèn)物理地址等等,使得c語(yǔ)言在進(jìn)行系統(tǒng)操作程序設(shè)計(jì)時(shí),顯得非常有效。 c 語(yǔ)言簡(jiǎn)潔、靈活。 就ibm-pc機(jī)上的c語(yǔ)言系統(tǒng)c-86而言,其代碼效率只比匯編語(yǔ)言低10%-20%,但c語(yǔ)言在描述問(wèn)題的編程迅速、表達(dá)能力強(qiáng)等優(yōu)點(diǎn),又是匯編語(yǔ)言所無(wú)法比擬的。 另一方面,語(yǔ)言優(yōu)秀的控制流和數(shù)據(jù)結(jié)構(gòu)、豐富的數(shù)據(jù)類型和運(yùn)算符,又使它在數(shù)值計(jì)算方面也顯示出相當(dāng)?shù)膬?yōu)勢(shì)。 還有, c語(yǔ)言書寫風(fēng)格獨(dú)特,表達(dá)形式也比較精練,它可以直接處理字符、數(shù)字、地址等,可以完成通常要用硬件才能實(shí)現(xiàn)的、普通的算術(shù)及邏輯運(yùn)算,且可以

5、表達(dá)數(shù)值處理、字處理功能。對(duì)語(yǔ)法限制也比較寬松,例如,c語(yǔ)言對(duì)數(shù)組下標(biāo)越界不做檢查,不專門設(shè)置邏輯型數(shù)據(jù)而以整型代替,整型和字符型數(shù)據(jù)可以通用等等。 可見,c語(yǔ)言較好地處理了簡(jiǎn)潔性與實(shí)用性、可移植性與高效益之間的矛盾。如果說(shuō)fortran 語(yǔ)言是面向工程師、cobol 語(yǔ)言是面向商務(wù)管理、pascal語(yǔ)言是面向?qū)W生、basic 語(yǔ)言是面向非程序員的,那么,c語(yǔ)言則是面向?qū)I(yè)程序設(shè)計(jì)的語(yǔ)言。5c+對(duì)c語(yǔ)言作了那些修改?參考答案:c+對(duì)c在作改進(jìn)時(shí),主要是擴(kuò)充,c+保留了傳統(tǒng)的和有效的結(jié)構(gòu)化語(yǔ)言的特征,即c的簡(jiǎn)潔、高效性,同時(shí)融合了面向?qū)ο蟮哪芰?。c+對(duì)c語(yǔ)言主要擴(kuò)充功能為:支持?jǐn)?shù)據(jù)抽象;支持面向

6、對(duì)象的設(shè)計(jì)及編程;改進(jìn)了c語(yǔ)言中的若干不足之處。6什么是可視化(visual)程序設(shè)計(jì)方法?參考答案:所謂可視化(visual)程序設(shè)計(jì),是指一種開發(fā)圖形界面(gui)方法。用這種方法,編程人員不必編寫大量代碼去描述界面元素的外觀和位置,只要把預(yù)先建立的界面元素如按鈕、列表框、對(duì)話框等windows風(fēng)格的部件,用mouse拖放到屏幕上適當(dāng)?shù)奈恢眉纯伞_@種快速創(chuàng)建用戶界面的方法技巧,如同在windows中使用諸如畫筆之類的繪圖程序那樣輕松。課外習(xí)題及解答1c+對(duì)c語(yǔ)言作了那些功能擴(kuò)充?參考答案:c+對(duì)c語(yǔ)言主要擴(kuò)充功能為:支持?jǐn)?shù)據(jù)抽象;支持面向?qū)ο蟮脑O(shè)計(jì)及編程;改進(jìn)了c語(yǔ)言中的若干不足之處。在作

7、擴(kuò)充和改進(jìn)時(shí),c+保留了傳統(tǒng)的和有效的結(jié)構(gòu)化語(yǔ)言的特征,即c的簡(jiǎn)潔、高效性,同時(shí)融合了面向?qū)ο蟮哪芰Α?世界上第一個(gè)結(jié)構(gòu)化語(yǔ)言是什么語(yǔ)言?它有什么特點(diǎn)? 參考答案:世界上第一個(gè)結(jié)構(gòu)化語(yǔ)言是pascal語(yǔ)言,因而大量用于教學(xué)之中。但pascal語(yǔ)言難以推廣到各種實(shí)際應(yīng)用領(lǐng)域,到目前為止基本上只是一種教學(xué)語(yǔ)言。3c語(yǔ)言也存在哪些缺點(diǎn)和不足?這些對(duì)我們有什么警示?參考答案:c語(yǔ)言也存在一些缺點(diǎn)和不足。例如,它的某些運(yùn)算符的優(yōu)先順序不符合人們的日常習(xí)慣;復(fù)合語(yǔ)句在多層嵌套時(shí),語(yǔ)句括號(hào)匹配情況不夠醒目;c語(yǔ)言的弱類型轉(zhuǎn)換具有潛在的不安全因素等等。這些都警示我們:用c語(yǔ)言編寫程序,切忌粗枝大葉,必須要有嚴(yán)

8、謹(jǐn)?shù)膽B(tài)度,不然會(huì)受到系統(tǒng)的懲罰。4把數(shù)據(jù)和數(shù)據(jù)的操作碼封裝在一個(gè)對(duì)象中,這種情況下的程序設(shè)計(jì)者有哪兩方面的任務(wù)?參考答案:這種情況下的程序設(shè)計(jì)者的兩方面的任務(wù)是:1。設(shè)計(jì)對(duì)象,即決定把哪些數(shù)據(jù)和操作封裝在一起;2。如何通知有關(guān)對(duì)象完成所需的任務(wù)。程序員這時(shí)就象一個(gè)總調(diào)度,不斷向各個(gè)對(duì)象發(fā)出命令。讓各個(gè)對(duì)象完成各自的操作。各個(gè)對(duì)象的操作完成了,整個(gè)任務(wù)也就完成了。第二章 visual c+ 60教材上習(xí)題二解答1基于windows的面向?qū)ο蟮某绦蛟O(shè)計(jì)的對(duì)向是什么?參考答案:客觀世界中任何一個(gè)事物都可以看成一個(gè)對(duì)象。這樣,我們可以說(shuō),客觀世界是由千千萬(wàn)萬(wàn)個(gè)對(duì)象組成的,它們之間用一定的方法相互聯(lián)系。

9、比如說(shuō)一個(gè)系是一個(gè)對(duì)象,一個(gè)班級(jí)也是一個(gè)對(duì)象。實(shí)際生活中,人們往往在一個(gè)對(duì)象中進(jìn)行活動(dòng),比如,學(xué)生在某個(gè)班中。從這點(diǎn)上說(shuō),對(duì)象是進(jìn)行活動(dòng)的基本單位。理論上講,一個(gè)對(duì)象應(yīng)該包括兩個(gè)要素:數(shù)據(jù)和需要進(jìn)行的操作。例如一個(gè)窗口是一組數(shù)據(jù)的集合和處理這些數(shù)據(jù)的方法和窗口函數(shù)。從面向?qū)ο蟮慕嵌葋?lái)看,窗口本身就是一個(gè)對(duì)象。2microsoft visual studio軟件包包含哪些工具軟件?參考答案:visual studio包含七個(gè)軟件:vf即大名鼎鼎的visual foxpro,我們比較了解它,其應(yīng)用非常廣泛; vbvisual basic,使用也很廣泛;vpvisual pascal;vjvisua

10、l j+;vivisual inter dev;vcvisual c+6.0,是visual studio 中功能最為強(qiáng)大、代碼效率最高的一種開發(fā)工具。微軟說(shuō)這是綜合性最高、最復(fù)雜的軟件開發(fā)產(chǎn)品。它支持windows編程,支持windows應(yīng)用程序,支持internet網(wǎng)絡(luò)編程,支持網(wǎng)絡(luò)應(yīng)用程序,是net開發(fā)平臺(tái)。vtvisual tool,visual工具。3實(shí)習(xí)visual c+60的安裝過(guò)程。參考答案:請(qǐng)結(jié)合講義第二章第二節(jié)的內(nèi)容,在機(jī)器上實(shí)現(xiàn)。最好每位同學(xué)使用一張系統(tǒng)光盤實(shí)現(xiàn)。4microsoft visual studio的安裝程序acmboot和setup有什么區(qū)別?參考答案:當(dāng)機(jī)

11、器上已有本系統(tǒng),再重新安裝或覆蓋時(shí),在我的電腦光驅(qū)右鍵打開系統(tǒng)光盤后,如果選擇acmboot再雙擊,則系統(tǒng)安裝從頭開始。如果選擇setup,則系統(tǒng)會(huì)提示已有一個(gè)系統(tǒng),然后詢問(wèn)用戶是覆蓋還是重新安裝。5某 。cpp程序編譯后在信息框中顯示:error(s) 0 warning(s)這表示什么?能不能連接生成exe文件?參考答案:前者指致命性錯(cuò)誤,必須為!這里不為0而為1,則表示不能生成或不正確地生成obj文件;后者指警告性錯(cuò)誤,最好為,如果不為,它不影響后面連接生成exe文件。只有兩種錯(cuò)誤都為時(shí),編譯完成后回答y,信息框中顯示:compiling接著生成運(yùn)行文件exe。6在vc+6.0之下完成本

12、章中例1、例22、例23、例24和例25的編輯、編譯、連接和執(zhí)行,并對(duì)結(jié)果進(jìn)行分析。參考答案:請(qǐng)結(jié)合講義第二章的內(nèi)容,在機(jī)器上實(shí)現(xiàn)。進(jìn)入vc之后,先建立源文件,然后再“構(gòu)建”即編譯和連接同時(shí)進(jìn)行,生成了正確的.exe文件后,再執(zhí)行。7在vc+6.0下建立工程gaohf,執(zhí)行時(shí)在鼠標(biāo)點(diǎn)擊處隨機(jī)顯示“hello,mfc”。參考答案: 請(qǐng)結(jié)合講義第二章第五節(jié)的內(nèi)容,在機(jī)器上實(shí)現(xiàn)。先設(shè)定工程環(huán)境,再打開工程,添加所需的代碼,然后再構(gòu)建(build),完成之后再執(zhí)行。課外習(xí)題及解答1visual studio包含哪些軟件:參考答案:vf即大名鼎鼎的visual foxpro,我們比較了解它,其應(yīng)用非常廣

13、泛; vbvisual basic,使用也很廣泛;vpvisual pascal;vjvisual j+;vivisual inter dev;vcvisual c+6.0,是visual studio 中功能最為強(qiáng)大、代碼效率最高的一種開發(fā)工具。微軟說(shuō)這是綜合性最高、最復(fù)雜的軟件開發(fā)產(chǎn)品。它支持windows編程,支持windows應(yīng)用程序,支持internet網(wǎng)絡(luò)編程,支持網(wǎng)絡(luò)應(yīng)用程序,是net開發(fā)平臺(tái)。vtvisual tool,visual工具。2在vc+6.0系統(tǒng)下,作工程環(huán)境設(shè)定時(shí),要作哪些操作?參考答案:打開vc+6.0集成開發(fā)環(huán)境(ide),選擇“文件file”菜單中的“新建n

14、ew”選項(xiàng),彈出新建new對(duì)話框。新建new對(duì)話框上有四個(gè)標(biāo)簽,單擊第二個(gè)工程project標(biāo)簽,接著就顯示出一個(gè)可供選擇的工程類型列表,這里我們要作三件事:1選擇存放路徑2為工程命名3選擇工程類型3如果機(jī)器上裝有dos-tc和vc兩套系統(tǒng),這時(shí)打開存在的.c或.cpp文件,將是如何工作?參考答案:如果機(jī)器上裝有dos-tc和vc兩套系統(tǒng),則vc優(yōu)先。這時(shí)雙擊任何盤上的c文件圖標(biāo),都會(huì)自動(dòng)進(jìn)入vc,而不會(huì)進(jìn)入tc。如果要在tc之下打開c文件,則只能手動(dòng)完成,進(jìn)入tc系統(tǒng)之后,再在file下由load完成。4安裝vc+6.0系統(tǒng),硬盤最好要有多少剩余年空間?參考答案:安裝本系統(tǒng),硬盤最好要有30

15、0400mb自由空間。5在有程序正在運(yùn)行的情況下安裝vc+6.0系統(tǒng)要注意什么?參考答案:安裝前要退出所有正在運(yùn)行的程序。第三章 程序設(shè)計(jì)基礎(chǔ)教材上習(xí)題三解答一. 簡(jiǎn)答題1. 與 c 相比, c+ 有哪些優(yōu)點(diǎn)?參考答案:與c相比,c+ 的主要優(yōu)點(diǎn)表現(xiàn)在封裝性、繼承性和多態(tài)性。 封裝性(encapsulatipn),即把數(shù)據(jù)與操作結(jié)合成一體,避免了數(shù)據(jù)絮亂帶來(lái)的調(diào)試與維護(hù)的困難,使程序結(jié)構(gòu)更加緊湊。 繼承性(inheritance),增強(qiáng)了軟件的可擴(kuò)充性并為代碼應(yīng)用提供了強(qiáng)有力的手段。 多態(tài)性(poly morphism),使程序員在程序設(shè)計(jì)時(shí)可以對(duì)問(wèn)題進(jìn)行更好的抽象,從而設(shè)計(jì)出重用性和維護(hù)性二

16、方面俱佳的程序。 這些使c+能顯示出強(qiáng)大的優(yōu)越性。2. 簡(jiǎn)述基于功能的程序設(shè)計(jì)和基于面向?qū)ο蟮某绦蛟O(shè)計(jì)的區(qū)別。參考答案:我們知道,無(wú)論通過(guò)什么方式實(shí)現(xiàn)的軟件,總是由被加工的對(duì)象及有關(guān)的功能構(gòu)成。在開發(fā)一個(gè)軟件的過(guò)程中,有兩種選擇:一種是把側(cè)重點(diǎn)放在對(duì)象上,另一種則是把側(cè)重點(diǎn)放在功能上。以前的軟件開發(fā)中,人們一直把注意力放在功能上,這是有道理的,因?yàn)橐环N軟件開發(fā)出來(lái),總是應(yīng)能正確提供所需的功能,后來(lái),人們漸漸發(fā)現(xiàn)了它的許多不足之處。主要是由于功能太具體,而且太易變!而對(duì)象是穩(wěn)定的!無(wú)論功能怎樣千變?nèi)f化,對(duì)象一般總能保持其穩(wěn)定不變。 顯然,圍繞對(duì)象構(gòu)造的軟件系統(tǒng),自然也會(huì)有較好的穩(wěn)定性。 為了評(píng)價(jià)

17、一個(gè)軟件結(jié)構(gòu)的好壞,我們不能只看這個(gè)軟件結(jié)構(gòu)是否可以經(jīng)得住各種變化。從這個(gè)角度講,面向?qū)ο髢?yōu)于面向功能。 事實(shí)證明,傳統(tǒng)的、基于功能的結(jié)構(gòu)化的開發(fā)方法,已遠(yuǎn)遠(yuǎn)不能滿足時(shí)代的要求,人們就不斷地進(jìn)行面向?qū)ο蠹夹g(shù)的研究。而面向?qū)ο蠹夹g(shù)的領(lǐng)域,有面向?qū)ο蟮恼Z(yǔ)言、面向?qū)ο蟮某绦蛟O(shè)計(jì)、面向?qū)ο蟮姆治觥⒚嫦驅(qū)ο蟮脑O(shè)計(jì)、面向?qū)ο蟮臄?shù)據(jù)管理系統(tǒng)及面向?qū)ο蟮幕纠碚摗?c + 語(yǔ)言, 就是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。3. return 語(yǔ)句有哪些格式? 舉例說(shuō)明。參考答案:有四種格式: . return;人為地終止當(dāng)前函數(shù)稱為被調(diào)函數(shù)的運(yùn)行,并把控制權(quán)轉(zhuǎn)回調(diào)用當(dāng)前函數(shù)的函數(shù)叫主調(diào)函數(shù)。如: main() int a,

18、b,c; printf(“a,b=”): scanf(“%d,%d,&a,&b); c=max(a,b); printf(“max=%dn”,c); int max(a,b) int x,y; int z; if(xy) z=x; else z=y; return; . return(x);其中,x是變量。即中止函數(shù)的執(zhí)行后,返回一個(gè)變量的值(x的值)到主調(diào)函數(shù)。 上例中,如果將函數(shù)max的函數(shù)體中的最后一句return改為“return(z);”更好,表示被調(diào)函數(shù)max將“z”作為函數(shù)值返回給主調(diào)函數(shù)main。 .return ;本格式表示,給出函數(shù)的返回值是一個(gè)任意表達(dá)式的結(jié)果,例如ret

19、urn x+y;即返回表達(dá)式x+y的結(jié)果為函數(shù)的返回值。 .return ;是終止函數(shù)的運(yùn)行,并以作為函數(shù)的返回值。如 return 0;則用“0”作為被調(diào)函數(shù)對(duì)主調(diào)函數(shù)的返回值,這樣作可能是檢查被調(diào)函數(shù)是否正常調(diào)用,如果返回 0,則表示被調(diào)函數(shù)已正常調(diào)用。4使用注釋定義符有哪些注意事項(xiàng)?參考答案:一種注釋是注釋符對(duì)“/*.*/”它在c和c+中都可以使用。 一個(gè)注釋符對(duì)可放在程序的任何位置,其中可以是包括漢字、空格、制表或換行符等合法字符作為注釋內(nèi)容。 注釋對(duì)可以分多行書寫, 但不可以嵌套。另一種是雙斜線“”開頭的注釋,其右邊是注釋內(nèi)容,它只能用于c+源程序中,c不用。系統(tǒng)處理源程序時(shí),遇“/

20、*”就找右邊的“*/”,中間的內(nèi)容都看成注釋;遇“/”則認(rèn)為此后直到行尾全是注釋。很明顯,“/”開頭的注釋可以不單獨(dú)占一行而出現(xiàn)在被注釋的語(yǔ)句之后,它不能跨行,如果有兩行及以上的注釋,每行的開頭都要冠以“/”。而/*/注釋對(duì)是可以跨行的。5預(yù)處理命令有哪兩種格式?各有什么功能?參考答案:格式一: #include 其中,尖括號(hào)“”是格式的要求。尖括號(hào)中指定的文件名表示#include在由系統(tǒng)設(shè)定的子目錄中尋找頭文件,這類頭文件已經(jīng)過(guò)編譯,由系統(tǒng)給出,系統(tǒng)僅按規(guī)定的路徑搜索包含文件。 格式二: #include “包含文件名”其中,雙引號(hào)是格式的要求。雙引號(hào)中指定的文件名表示 #include先

21、在當(dāng)前目錄中尋找頭文件,找不到時(shí)再按系統(tǒng)規(guī)定的路徑搜索包含文件。這類頭文件通常由用戶自己給出,跟在主程序之后,尚未被編譯。二. 填空1. 在 c語(yǔ)言源程序中,與pascal中的begin-end類似的,代表程序體的符號(hào)是: _。答案: 。 2. 當(dāng)程序只由一個(gè)函數(shù)組成時(shí),這個(gè)函數(shù)是_函數(shù)。答案:main( )。3. 每一條語(yǔ)句結(jié)束時(shí),必須以_結(jié)尾。答案:“;”。三. 指出以下程序中的錯(cuò)誤并改正1. #include “stdio.h” void main() x=1; y=2; printf(%dn,x+y);答案:在main函數(shù)體前沒有定義變量,要加說(shuō)明:int x,y;2. #includ

22、e “stdio.h” void main( ) int x,y,z; z=x+y; printf(%dn,z); 答案:int x,y,z;對(duì)x,y 未賦值。3.#include “stdio.h” void main() int i,j,k; i=j=100; k=10*i*j; printf(%dn,k); 參考答案:本題無(wú)語(yǔ)法錯(cuò)誤,但在pc機(jī)上運(yùn)行可能會(huì)超出取值范圍而輸出隨機(jī)(莫名其妙)的錯(cuò)誤結(jié)果。常規(guī)int變量只能取值于-3276832767之間,而10*i*j=100000超出了這個(gè)范圍。 要計(jì)算出較大的整數(shù),可以把變量定義為long型,輸出時(shí)用%ld。 本程序可寫成: main(

23、) int i,j; long k; i=j=100; k=10*i*j; printf(“%ldn”,k); 這樣會(huì)正確地輸出結(jié)果 100000。四.判斷改錯(cuò)1. 數(shù)學(xué)式 的c+表達(dá)式是a+b/c*d參考答案:,c+表達(dá)式應(yīng)是(a+b)/(c*d)2. 把0送x的賦值語(yǔ)句是0=x;參考答案:,把0送x的賦值語(yǔ)句應(yīng)是x=0;3. int a,b; scanf(%d%d,a,b);參考答案:,輸出參數(shù)應(yīng)是變量的地址值,所以輸入應(yīng)寫成: scanf(“%d%d”,&a,&b);五.程序設(shè)計(jì):設(shè)x,y,z為整型數(shù)(int),當(dāng)x=10,y=20,z=30時(shí),編寫程序求x,y,z三個(gè)數(shù)的和 sum。參

24、考答案:main() int x,y,z,sum; x=10;y=20;z=30; sum=x+y+z; printf(“the sum of x,y and z is %d”,sum); 課外習(xí)題及解答一單項(xiàng)選擇題:下列四個(gè)敘述中,錯(cuò)誤的是。 答案:c一個(gè)c源程序必須有且只能有一個(gè)主函數(shù)一個(gè)c源程序可以含一個(gè)或多個(gè)子函數(shù)在c源程序中注釋說(shuō)明必須位于語(yǔ)句之后c源程序的基本結(jié)構(gòu)是函數(shù)以下標(biāo)識(shí)符中,不能作為合法的c用戶定義標(biāo)識(shí)符。答案:dforprintfwordsizeofc語(yǔ)言變量名的第一個(gè)字符。 答案:c必須為字母必須為下劃線必須為字母或下劃線可以是字母、數(shù)字和下劃線中的任意一種c語(yǔ)言程序的

25、基本結(jié)構(gòu)單位是。 答案: aa函數(shù) b語(yǔ)句 c字符 d程序行一個(gè)c程序的執(zhí)行是。 答案:a從本程序的main函數(shù)開始,到本程序的main函數(shù)結(jié)束從本程序的main函數(shù)開始,到本程序的最后一個(gè)函數(shù)結(jié)束從本程序的第一個(gè)函數(shù)開始,到本程序的最后一個(gè)函數(shù)結(jié)束從本程序的第一個(gè)函數(shù)開始,到本程序的main函數(shù)結(jié)束下列四個(gè)敘述中,正確的是。 答案:d在c程序中,main函數(shù)必須位于其他函數(shù)的最前面在c程序中,一行只能寫一條語(yǔ)句c程序中的基本結(jié)構(gòu)是程序行語(yǔ)句是完成程序功能的最小單位c語(yǔ)言規(guī)定,在一個(gè)c程序中,main()函數(shù)的位置。 答案:c必須在開始必須在最后可以任意必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)c語(yǔ)言可執(zhí)行程序的

26、開始執(zhí)行點(diǎn)是。 答案:c程序中第一條可執(zhí)行語(yǔ)言程序中第一個(gè)函數(shù)程序中的main 函數(shù)包含文件中的第一個(gè)函數(shù)以下說(shuō)法中正確的是。 答案:cc語(yǔ)言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行在c語(yǔ)言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義c語(yǔ)言程序總是從main()函數(shù)開始執(zhí)行c語(yǔ)言程序中的main()函數(shù)必須放在程序的開始部分10下列四個(gè)敘述中,正確的是。 答案:cc語(yǔ)言規(guī)定只有主函數(shù)可以調(diào)用其他函數(shù)在一個(gè)c函數(shù)中,只允許有一對(duì)花括號(hào)c語(yǔ)言中的標(biāo)識(shí)符可以用大寫字母在對(duì)程序進(jìn)行編譯的過(guò)程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤11下面屬于c語(yǔ)言保留字的是。 答案:bint typedefenum union12下

27、面不屬于c語(yǔ)言保留字的是。 答案:bshortelseexternfor13下列四組c語(yǔ)言標(biāo)識(shí)符中,正確的一組是。 答案:aname char _abc a23abc?c 5bytes -usa _54321print const type definenclude integer double short_int14請(qǐng)選出可用作c語(yǔ)言用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符。 答案:b void define worda3_b3 _789 iffor -gif cased undo sizeof15下列屬于c語(yǔ)句的是。 答案:cprintf(“%dn”,d)#includea=b;b=c;c=a/*this

28、is a program*/16能直接讓計(jì)算機(jī)識(shí)別的語(yǔ)言是。 答案:dcbasic匯編語(yǔ)言機(jī)器語(yǔ)言17編輯程序的功能是。 答案:b調(diào)試程序建立并修改文件將c源程序編譯成目標(biāo)程序命令計(jì)算機(jī)執(zhí)行指定的操作二程序設(shè)計(jì)1編寫程序:在系統(tǒng)顯示提示:please enter your name and age:之后,鍵入:ling_ming和21,系統(tǒng)接著顯示your name is ling ming和your age is 21。參考答案: #include void maim() coutname; cinage; cout“your name is”nameendl; cout“your age

29、is”ageb參考答案:month student_name _above lotus_1_2_3 basic二、閱讀程序?qū)懡Y(jié)果(基于16位cpu、tc)#include “stdio.h”void main( )int a,b,c,d; a=-1;b=4;c=6;d=(a+b)*c; printf(“%dn”,d);參考答案:18三、填空1、變量名是用_表示的。答案:標(biāo)識(shí)符2、一個(gè)變量名可用字母、_和下劃線組成。答案:數(shù)字3、一個(gè)變量名必須以一個(gè)_開頭。答案:字母或下劃線4、變量的_決定了變量可以取值的范圍和它可以參加的運(yùn)算。答案:類型5、char 型變量的值實(shí)質(zhì)上是一個(gè)二進(jìn)制_位的整數(shù)值。

30、答案: 86、char 型變量的取值范圍是_。答案:-128127 7、unsigned char 型變量的取值范圍是_。答案:02558、在不同類型數(shù)值運(yùn)算中,如果一個(gè)數(shù)據(jù)是 float 型或 double 型,則另一數(shù)據(jù)要先轉(zhuǎn)為_型,結(jié)果為_型。答案:double double9、不同類型的數(shù)值運(yùn)算中,如果兩個(gè)數(shù)據(jù)中最高級(jí)別為 long 型,則另一數(shù)據(jù)先轉(zhuǎn)為_型,結(jié)果為_型。答案:long long四、指出下列語(yǔ)句或程序段的錯(cuò)誤,并改正。(基于tc、16位cpu)1、char ch1, ch2; ch1=a; ch2=“b”; ch1=abc;參考答案:“b”為字符串,不可送字符變量ch2

31、 ch1= abc; ch1為字符型,不能接收串,且串要用“ ”。2、float x1; x1=12345.6789;參考答案:x1=12345.6789; x1為單精度類型,只能接收7位數(shù),后面兩位小數(shù)會(huì)丟失!把說(shuō)明改為 double x1則可全接收這個(gè)實(shí)型常數(shù)。五、設(shè)i為int變量,f為float變量,d為double變量,e為long型。寫出以下式子的運(yùn)算次序:10+a+i*f-d/e參考答案:運(yùn)算次序?yàn)? . 10+a: 先將a轉(zhuǎn)成97,結(jié)果為107; . i*5: i與5都轉(zhuǎn)成double,結(jié)果為double; . 107+i*5:107轉(zhuǎn)成double雙精度類型, 即107.00,

32、結(jié)果為double; . e轉(zhuǎn)成double,dle的結(jié)果為double; . 10+a+c*f的結(jié)果為double,減去d/e,結(jié)果為double。六、指出以下語(yǔ)句的結(jié)果或程序的輸出。(基于tc作)1、i=3; printf(“%d”,+i);答案:42、i=3; printf (“%d”,i+ );答案:33、當(dāng)i=3時(shí),j=+i;j的值為多少? 當(dāng)i=3時(shí),j=i+;j的值為多少?答案:4 34、當(dāng) i=3; k=(i+)+(i+)+(i+); k的值為多少?答案:95、當(dāng)i=3; k=(+i)+(+i)+(+i);k 的值為多少?答案:186、#include “stdio.h”voi

33、d main( ) int i,j; i=20; j=(i- = 4, i/2); printf(“i=%d,j=%dn”,i,j); 答案:i=16 (先求i-=4,得i=20-4=16 j=8 再求i/2=8,最后把8作為逗號(hào)表達(dá)式的值賦于變量j)七、程序設(shè)計(jì)(可以基于tc來(lái)作)1、以下是輸入三角形三邊長(zhǎng)求三角形面積的程序,請(qǐng)?zhí)畛洹?include “math.h”#include “stdio.h”void main( ) float a,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); s=_; area=_; printf(“a=%7.25,b=%7.2

34、f,c=%7.2fn”,_); printf(“area=%7.2fn”,_); 參考答案:s=1.0/2*(a+b+c+;area=sgrt(3*(s-a)*(s-b)*(s-c);printf(“a=%7.25,b=%7.2f,c=%7.2fn”,a,b,c,s);printf(“area=%7.2fn”,area);2、求ax2+bx+c=0的根,設(shè)b2=4ac0,a0。#include “math.h” #include “stdio.h”void main( ) float a,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f:”,&a,&b&c);

35、 disc=b*b-4*a*c; p=-b/(2*a);q=sqrt_; x1=_;x2=_; printf(“nn x1=%5.2fn x2=%5.2fn”,_); 參考答案:q=sqrt(disc)/(2*a);x1=p+q; x2=p-q;printf(“nn x1=%5.2fn x2=%5.2fn”,x1,x2);3、從鍵盤上輸入一個(gè)大寫字母,改用小寫字母輸出。#include “stdio.h”_ char c1, c2; scanf(“%c”,c1); printf (“%c,%dn”,_); c2=_; printf(“%d, %dn”,_); 當(dāng)輸入:a 輸出為:a,65 a,

36、97參考答案: main() printf (“%c,%dn”,c1,c1); c2=c1+32; printf(“%d,%dn”,c2,c2);課外習(xí)題及解答一單項(xiàng)選擇題:1下面程序的輸出是。 答案:bmain( ) int x=023; printf(“%dn”,-x);17182324執(zhí)行下列程序的結(jié)果是。 答案:bmain( )float x=1,y;y=+x*+x;printf(“%dn”,y);9.0000006.0000001.000000程序有錯(cuò)誤執(zhí)行下面程序中的輸出語(yǔ)句后,a的值是。 答案:cmain( ) int a; printf(“%dn”,(a=3*5,a*4,a+5

37、);65201510下面程序的輸出是。 答案:cmain( ) int a=-1,b=4,k; k=(a+=0)&(!(b-=0); printf(“%d %d %d n”,k,a,b);0, 0, 30, 1, 21, 0, 31, 1, 2以下程序的輸出結(jié)果是。 答案:dmain( ) int a=-1,b=4,k; k=(+a0)&!(b-=0); printf(“%d %d %dn”k,a,b);1, 0, 41, 0, 30, 0, 30, 0, 4下面程序的輸出是。 答案:dmain( ) char x=040; printf(“%dn”,x=x1);10016012064以下程序

38、的結(jié)果是。答案:dmain( ) unsigned int a=3,b=10; printf(“%dn”,a1);151213 以下程序輸出結(jié)果是。 答案:d#include main( ) int i , j, k, a=3, b=2; i=(-a=b+)?a: +b); j=a+; k=b; printf(“i=%d,j=%d,k=%dn”,i,j,k);i=2, j=1, k=3i=1, j=1, k=2i=4, j=2, k=4i=1, j=1, k=3以下程序段輸出結(jié)果是。 答案:cint a=10;printf(“%dn”,-a,);01-11-10-510以下程序的輸出結(jié)果是。

39、答案:amain( ) char c1=6,c2=0; printf(“%c,%c,%dn”,c1,c2,c1-c2);6, 0, 6因輸出格式不合法,輸出出錯(cuò)信息6, 0, 76, 0, 511設(shè)x和y均為int型變量,則執(zhí)行以下語(yǔ)句后的輸出為。 答案:bx=13;y=5;printf(“%d”,x%=(y/=2);012312以下程序段輸出結(jié)果是。 答案:bchar a=222;a=a&052;printf(“%d,%on”,a,a);222,33610,12244,364254,3713以下程序段輸出結(jié)果是。 答案:achar a=111;a=a00;printf(“%d,%on”,a,

40、a);111,1570,020,247,714若有下面的說(shuō)明和語(yǔ)句,則輸出結(jié)果為。 答案:bchar a=9,b=020;printf(“%on”,a&b1);03774032以上答案均不正確二程序設(shè)計(jì)編寫一個(gè)輸入半徑值radius后,即求出圓的周長(zhǎng)circum和圓的面積area的程序。要求用 #define定義一個(gè)符號(hào)常量pi3.14159 來(lái)完成。參考答案:#include #define pi 3.14159void main() /const pi=3.14159; float radius; double circum,area; scanf(%f,&radius); circum=

41、2*pi*radius; area=pi*radius*radius; printf(“circumference is %fn”,circum); printf(“area is %fn”,area);第五章 庫(kù)函數(shù)與輸入輸出教材上習(xí)題五解答一. 填空1.函數(shù)putchar的功能是_)。答案:輸出一個(gè)字符。2.在使用標(biāo)準(zhǔn)i/o庫(kù)函數(shù)時(shí),要用預(yù)編譯命令_將頭文件_包括到用戶源文件中,即_。答案:#includ stdio.h #includ “stdio.h”3.printf可以輸出_個(gè)數(shù)據(jù),且為_類型。答案:多 任意。4. printf 函數(shù)的一般格式是 :printf(格式控制,_),其中

42、,格式控制是_。答案:輸出表列 用雙引號(hào)括起的字符串二. 多項(xiàng)選擇1. 以下函數(shù)哪些在調(diào)用前需要使用命令#include “stdioh” 答案:a b a. getchar b. putchar c. printf d. scanf2. 以下功能為輸入輸出字符串的函數(shù)有: 答案:b d a. getchar b. gets c. putchar d. getchar3. 只能用來(lái)輸入一個(gè)字符的函數(shù)是 答案:a c d a. getc b. gets c. getche d. getchar三. 讀以下程序:#include “stdio.h”void main() char ch; int

43、i; char str; float x; scanf(“%d%s%f”, &ch, &i, str, &x); printf(“%c%d%s%fn”, ch, i, str, x); 當(dāng)輸入為: w123hello 123.456 w 123 hello 123.456 w123hello123.456然后再打入 1輸出各自是什么?為什么?參考答案: 輸出為w 123 hello 123.456001 輸出同,因?yàn)榭捎每崭穹? 回車符或制表符tab,將輸入的字符隔開,這樣, scanf就能從輸入流中獲取所需數(shù)據(jù)。 第一次回車無(wú)輸出,打入1后輸出為: w 123 hello123.456 1.

44、000000 原因是: scanf讀數(shù)據(jù)時(shí),類型不同就認(rèn)為當(dāng)前數(shù)據(jù)讀完,鑒此,%c只讀入一個(gè)字符w送ch;%d接收數(shù)字遇h而結(jié)束,即將123送i;%s接收各種字符直到遇空白符(空格、制表、回車)時(shí)結(jié)束,所以hello與123.456一起讀入str。這時(shí)打cr差一個(gè)數(shù),打1被%f接收,才輸出。%c可接收各種字符,也包括空格回車一類字符。所以,如果輸入123 helle123.456時(shí),cr被ch 接收,將輸出一個(gè)空行,然后輸出 123 hello 123.456001課外習(xí)題及解答一單項(xiàng)選擇題1指出下面正確的輸入語(yǔ)句是_。 答案:bscanf(“a=b=%d”,&a,&b); scanf(“a=

45、%d,b=%d”,&m,&f);scanf(“%3c”,c); scanf(“%5.2f,&f”);2以下程序的輸出結(jié)果是_。 答案:dmain() int x=10,y=10; printf(“%d %dn”,x-,-y);10 109 90 1010 93設(shè)有如下定義int x=10,y=3,z;則語(yǔ)句printf(“%dn”,z=(x%y,x/y);的輸出結(jié)果是_。 答案:d1043 4以下程序輸出結(jié)果是_。 答案:amain( )int i=010,j=10,k=0x10;printf(“%d,%d,%dn”,i,j,k);8, 10, 16 8, 10, 1010, 10, 10 10, 10, 165以下程序的輸出結(jié)果是_。 答案:dmain( )int k=17;printf(“%d,%0,%xn”,k,k,k);17,021,0x1117,17,1717,0x11,02117,21,116下面程序段的輸出是_。 答案:cunsigned int a=32768;printf(:a=%dn”,a);a=32768a=32767a=32768a=-17c語(yǔ)句printf(“%dn”,null);的輸出結(jié)果是_。 答案:b不確定0-118若變量都已正

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論