如何使用Visual C++6和如何使用教輔資料_第1頁(yè)
如何使用Visual C++6和如何使用教輔資料_第2頁(yè)
如何使用Visual C++6和如何使用教輔資料_第3頁(yè)
如何使用Visual C++6和如何使用教輔資料_第4頁(yè)
如何使用Visual C++6和如何使用教輔資料_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

PAGEPAGE71C程序設(shè)計(jì)基礎(chǔ)上機(jī)實(shí)驗(yàn)指導(dǎo)書李文杰、李桂芝、魚濤編寫楊根興審定北京機(jī)械工業(yè)學(xué)院計(jì)算中心目次說(shuō)明怎樣學(xué)習(xí)C語(yǔ)言實(shí)驗(yàn)一C程序集成開發(fā)環(huán)境熟悉實(shí)驗(yàn)二數(shù)據(jù)的輸入和輸出實(shí)驗(yàn)三表達(dá)式的計(jì)算實(shí)驗(yàn)四選擇結(jié)構(gòu)語(yǔ)句實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)語(yǔ)句實(shí)驗(yàn)六數(shù)組應(yīng)用(一)實(shí)驗(yàn)七數(shù)組應(yīng)用(二)實(shí)驗(yàn)八函數(shù)及程序結(jié)構(gòu)(一)實(shí)驗(yàn)九函數(shù)及程序結(jié)構(gòu)(二)實(shí)驗(yàn)十指針的應(yīng)用說(shuō)明C程序設(shè)計(jì)同其他程序設(shè)計(jì)一樣,使實(shí)踐性很強(qiáng)的課程。除了要聽好課,多看課外書外,還需大量的上機(jī)實(shí)踐才能更好地理解和掌握所學(xué)到的內(nèi)容。一般來(lái)說(shuō),上機(jī)和講課時(shí)間之比應(yīng)不少于1:1。但由于目前各校安排的教學(xué)時(shí)數(shù)限制,課內(nèi)時(shí)間將更多的精力用于講課上,課內(nèi)安排的上機(jī)時(shí)間相對(duì)較少,學(xué)生不要因此對(duì)上機(jī)的重要性有所誤解。學(xué)生應(yīng)在課外再花一定的時(shí)間進(jìn)行C語(yǔ)言的上機(jī)實(shí)踐,這樣才能學(xué)好該門課。上機(jī)實(shí)驗(yàn)的目的有以下幾個(gè)方面:⑴驗(yàn)證所編寫的程序的正確性。⑵進(jìn)一步理解教材和課堂授課中介紹的內(nèi)容⑶熟練地掌握C程序開發(fā)環(huán)境的使用,為今后開發(fā)大型軟件打好基礎(chǔ)。⑷學(xué)習(xí)和掌握一般程序的調(diào)試和測(cè)試方法。上機(jī)前應(yīng)充分做好以下準(zhǔn)備工作:⑴復(fù)習(xí)和掌握與本次實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容。⑵根據(jù)本次實(shí)驗(yàn)的內(nèi)容,在紙上編寫好準(zhǔn)備上機(jī)調(diào)試的程序,并初步檢查無(wú)誤。⑶準(zhǔn)備好對(duì)程序進(jìn)行測(cè)試的數(shù)據(jù)。⑷對(duì)每種測(cè)試數(shù)據(jù),給出預(yù)期的程序運(yùn)行結(jié)果。⑸預(yù)習(xí)實(shí)驗(yàn)步驟,對(duì)實(shí)驗(yàn)步驟中提出的一些問(wèn)題進(jìn)行思考。上機(jī)實(shí)驗(yàn)后,應(yīng)及時(shí)寫出實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告應(yīng)包括以下內(nèi)容:⑴實(shí)驗(yàn)?zāi)康暮蛢?nèi)容。⑵程序說(shuō)明,包括程序結(jié)構(gòu)、各模塊的算法(N-S圖表示)。⑶打印出的調(diào)試正確的源程序。⑷打印出的程序運(yùn)行記錄(包括對(duì)不同測(cè)試數(shù)據(jù)的運(yùn)行結(jié)果)。⑸針對(duì)實(shí)驗(yàn)步驟中提出的問(wèn)題,寫出解決辦法及對(duì)運(yùn)行結(jié)果的分析。怎樣學(xué)習(xí)C語(yǔ)言很多同學(xué)對(duì)學(xué)習(xí)C語(yǔ)言感到很難,尤其是在各高校將C語(yǔ)言放在大學(xué)第一學(xué)年教學(xué)時(shí)經(jīng)常會(huì)考試不及格。究竟怎樣才能學(xué)好C語(yǔ)言?這里將我對(duì)C語(yǔ)言的理解給大家介紹一下,計(jì)算機(jī)語(yǔ)言挺枯燥的,如何提起興趣?首先要明確學(xué)習(xí)的目標(biāo),沒有明確的學(xué)習(xí)目標(biāo)就沒有學(xué)習(xí)動(dòng)力。給自己定一個(gè)目標(biāo),比如這次一定通過(guò)課程考試,或者這個(gè)月學(xué)習(xí)完做個(gè)東西出來(lái)等等。其次,確定了目標(biāo)之后,要認(rèn)真去做,多上機(jī)操作實(shí)踐,遇到不懂的要多跟教師和其他同學(xué)交流,千萬(wàn)不能放棄。當(dāng)自己編的一段小程序運(yùn)行通過(guò),或攻下一道難題,自己就會(huì)獲得一種成就感,可能還會(huì)很興奮,也就漸漸有了興趣。最后,要把所學(xué)的知識(shí)運(yùn)用到實(shí)際問(wèn)題當(dāng)中,這樣既可以鞏固所學(xué)的知識(shí),不至于完學(xué)了就忘,還可以根據(jù)實(shí)際需要拓展知識(shí)面。這樣良性循環(huán),興趣也會(huì)越來(lái)越濃。學(xué)習(xí)計(jì)算機(jī)語(yǔ)言最好的方法是什么?答曰:讀程序。沒錯(cuò),讀程序是學(xué)習(xí)C語(yǔ)言入門最快,也是最好的方法。不要總是抱著書本逐行啃,而是學(xué)習(xí)它們的例程。學(xué)習(xí)完每一章,都要認(rèn)真體會(huì)這一章的所有概念,然后不放過(guò)這一章中提到的所有例程,仔細(xì)研讀程序,直到每一行都理解了,然后找?guī)讉€(gè)編程題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經(jīng)讀懂的程序,不要以為例程你已經(jīng)讀懂了,你就可以寫出和它一樣的程序,絕對(duì)不一定,不相信你就試一試吧,如果寫不出來(lái),也不要著急,回過(guò)頭來(lái)再繼續(xù)研究例程,想想自己為什么寫不出來(lái),然后再去寫這段程序,反反復(fù)復(fù),直到你手到擒來(lái)為止。這一過(guò)程,就和我們學(xué)習(xí)任何其他語(yǔ)言比如英語(yǔ)和漢語(yǔ)一樣。我們大家都有體會(huì),我們學(xué)習(xí)一門語(yǔ)言,都是從最基本的語(yǔ)法開始,然后學(xué)習(xí)一些字和詞,再來(lái)學(xué)習(xí)一些詞組或句子,然后再用詞組和句子組成一段話,表達(dá)一個(gè)簡(jiǎn)單的意思,最后才是寫一篇文章或者是一本書,表達(dá)更復(fù)雜的思想。我們知道,在我們完成這一過(guò)程時(shí),并不是像說(shuō)得這么簡(jiǎn)單。在我們能寫出一篇好的文章或者一本好書之前,我們可能需要閱讀大量的其他人寫的好文章或好書,有時(shí)我們還要把它們背下來(lái);同樣的,在我們寫出一個(gè)好的程序或者軟件前,我們也需要閱讀大量的樣本例程或者軟件的源代碼,甚至要背一些好的程序代碼。寫程序的最高境界其實(shí)就是掌握各種解決問(wèn)題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問(wèn)題的方法(算法)。?

那么怎樣才算精通程序設(shè)計(jì)呢?怎樣才能精通程序設(shè)計(jì)呢?舉個(gè)例子:你面前有10個(gè)人,找出一個(gè)叫“張三”的人,你該怎么辦?第一種方法:直接對(duì)這10個(gè)人問(wèn):“誰(shuí)叫張三”。第2種方法:你挨個(gè)去問(wèn)“你是不是張三?”,直到問(wèn)到的這個(gè)人就是張三。第三種方法:你去挨個(gè)問(wèn)一個(gè)人“你認(rèn)不認(rèn)識(shí)張三,指給我看”。不要小看這個(gè)問(wèn)題,你說(shuō)當(dāng)然會(huì)選第一種方法,沒錯(cuò)恭喜你答對(duì)了,因?yàn)檫@個(gè)方法最快,效率最高,但是在程序設(shè)計(jì)中找到解決問(wèn)題的最優(yōu)方法和你用的手段卻是考驗(yàn)一個(gè)程序員程序設(shè)計(jì)水平的重要標(biāo)志,而且是不容易達(dá)到的。實(shí)驗(yàn)一C程序集成開發(fā)環(huán)境熟悉一、實(shí)驗(yàn)?zāi)康恼莆赵赩isualC++6.0集成開發(fā)環(huán)境下怎樣編輯、編譯、連接、執(zhí)行、修改和調(diào)試C語(yǔ)言程序。二、實(shí)驗(yàn)內(nèi)容1.進(jìn)入可視化的C++6.0集成開發(fā)環(huán)境⑴啟動(dòng)計(jì)算機(jī),進(jìn)入窗口環(huán)境操作界面。⑵鼠標(biāo)依次點(diǎn)擊“開始”→“程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++6.0單擊此處來(lái)修改文件保存位置此處輸入源程序文件名⑶選擇“文件”(File)菜單中的“新建”(New)命令,在新建圖1單擊此處來(lái)修改文件保存位置此處輸入源程序文件名對(duì)話框中,選擇“文件”選項(xiàng)卡,再選擇“C++SourceFile”類型,按圖示操作后單擊對(duì)話框中的“確定”按鈕。(見圖1)⑷接著就會(huì)出現(xiàn)如圖2所示的VC界面。⑸在編輯窗口中,輸入如下內(nèi)容:#include"stdio.h"http://以上行對(duì)于本書中的例子沒有給出。望同學(xué)們對(duì)于所有的//程序都保留這樣一行。main(){ printf("Hello!這是我的FirstC程序.\n"); } ⑹選擇“編譯”菜單中的“編譯my_c1.cpp”命令,并在出現(xiàn)的對(duì)話框中選擇“是(Y)”結(jié)果如圖3。圖2編譯信息窗圖3編譯信息窗⑺選擇“編譯”菜單中的“構(gòu)件my_c1.exe”命令,構(gòu)建可執(zhí)行程序my_c1.exe,再選擇“編譯”菜單中的“!執(zhí)行my_c1.exe”命令。在出現(xiàn)的對(duì)話框中選擇“是(Y)”,結(jié)果屏幕如圖4所示。圖4圖中的黑色窗口為運(yùn)行結(jié)果窗口。按任意鍵就可返回編輯界面。⑻修改上述程序,將printf行括號(hào)中的雙引號(hào)去掉左邊的,重復(fù)⑹,可以看到圖5。其中的編譯信息窗顯示:鼠標(biāo)點(diǎn)擊滾動(dòng)條,查看錯(cuò)誤信息圖5鼠標(biāo)點(diǎn)擊滾動(dòng)條,查看錯(cuò)誤信息my_c1.obj-16error(s),1warning(s)可以看到由于一個(gè)雙引號(hào)的漏寫,導(dǎo)致出現(xiàn)16個(gè)語(yǔ)法錯(cuò)誤,而實(shí)際上的錯(cuò)誤只有一個(gè),這是C編譯器的特點(diǎn),當(dāng)它遇到錯(cuò)誤時(shí),會(huì)做出一些判斷或推測(cè),有時(shí)這種推測(cè)判斷正確,有時(shí)也會(huì)錯(cuò)誤。了解這一特點(diǎn)后,希望同學(xué)們?cè)谏蠙C(jī)時(shí),先去修改第一個(gè)錯(cuò)誤,一般可以在修改一個(gè)錯(cuò)誤后立即重新編譯,這樣可以快速減少錯(cuò)誤的數(shù)目。下面請(qǐng)同學(xué)們用鼠標(biāo)點(diǎn)擊滾動(dòng)條上的滑塊,查當(dāng)前錯(cuò)誤所在的位置指示看第一條錯(cuò)誤信息,并用鼠標(biāo)雙擊第一個(gè)錯(cuò)誤信息。(圖6),當(dāng)前錯(cuò)誤所在的位置指示錯(cuò)誤的解釋錯(cuò)誤所在的文件及行號(hào)圖6錯(cuò)誤的解釋錯(cuò)誤所在的文件及行號(hào)可以看到,C編譯器將Hello理解為了標(biāo)識(shí)符,而前面又沒有對(duì)Hello的說(shuō)明,所以認(rèn)為它是未聲明的標(biāo)識(shí)符(undeclaredidentifier),這個(gè)錯(cuò)誤在初學(xué)者的程序里非常多見,希望同學(xué)們記住它。將雙引號(hào)加上再重新編譯,就可恢復(fù)為無(wú)錯(cuò)誤了。⑼修改上述程序,在#include“stdio.h”這一行的最左邊加兩個(gè)“/”,即使得這一行成為注釋(顯示為綠色),重復(fù)⑹,可以看到圖7所示的錯(cuò)誤。相信同學(xué)們對(duì)其中的錯(cuò)誤說(shuō)明不難理解了,C編譯器說(shuō)printf是未聲明的標(biāo)識(shí)符。原因是printf不是C語(yǔ)言的基本部分,它是定義在“stdio.h”中,這也就是我們?yōu)槭裁丛谇懊嬲f(shuō)要在自己的程序前部加#include“stdio.h”的原因。⑽請(qǐng)先選擇“文件”菜單的“關(guān)閉工作區(qū)”命令,再按上面的步驟(3)~(5)操作將編輯窗口的程序更換為如下程序文本,依次引入下述錯(cuò)誤,每引入一個(gè)錯(cuò)誤,就對(duì)程序進(jìn)行編譯,記錄編譯器產(chǎn)生的錯(cuò)誤信息,寫在實(shí)驗(yàn)報(bào)告里。/*變量使用相關(guān)的語(yǔ)法問(wèn)題*/#include"stdio.h"voidmain(){ inta=1,b=2,c=3;printf("Someoutput:%d%d%d\n",a,b,c,c);}①把第6行變量聲明語(yǔ)句的第一個(gè)逗號(hào)改為分號(hào)②把第7行printf()改為print()③去掉第7行中的第2個(gè)雙引號(hào)④把第7行中a,b,c,c改為a,b,c⑤去掉printf語(yǔ)句末尾的分號(hào)⑥去掉用于結(jié)束的花括號(hào)注意,在引入每一個(gè)錯(cuò)誤并編譯后,開始引入下一個(gè)錯(cuò)誤前將上一錯(cuò)誤再改正。2.程序的調(diào)試手段作為程序員編寫程序,一個(gè)難以避免的工作就是對(duì)程序的調(diào)試。調(diào)試包括語(yǔ)法方面的,這一般通過(guò)編譯就可基本解決,比如在上述圖3中,細(xì)心的同學(xué)可能注意到在底部的編譯信息窗中,編譯報(bào)告中說(shuō):my_c1.obj-0error(s),1warning(s),意思是編譯過(guò)程中沒發(fā)現(xiàn)錯(cuò)誤(0error(s)),但有一個(gè)不合規(guī)范的使用(1warning(s))。編程序應(yīng)最好是達(dá)到0error和0warning,但有時(shí)無(wú)法做到如此完美,只要達(dá)到0error就可以了。若不能做到0error,將不能產(chǎn)生機(jī)器語(yǔ)言程序,因而也就無(wú)法執(zhí)行程序。所以同學(xué)們?cè)谡{(diào)試自己的程序時(shí),必須是做到經(jīng)編譯后0error。好在編譯器對(duì)發(fā)現(xiàn)的錯(cuò)誤都有一個(gè)比較正確的修改意見,同學(xué)們按意見修改后一般就可消除錯(cuò)誤,只是修改意見是英文的,同學(xué)們需有一定的專業(yè)詞匯或者經(jīng)過(guò)一定時(shí)間與VC++的接觸,就可理解;另一類就是邏輯方面的,這類錯(cuò)誤的消除相對(duì)麻煩。好在VC提供了非常豐富的調(diào)試手段,幫助我們分析錯(cuò)誤,前提是程序已經(jīng)沒有語(yǔ)法錯(cuò)誤,也就是說(shuō)編譯已經(jīng)通過(guò)(0error(s))。下面我們了解一些常用的,為了便于說(shuō)明,請(qǐng)先選擇“文件”菜單的“關(guān)閉工作區(qū)”命令,再按上面的步驟(3)~(5)操作將編輯窗口的程序更換為如下程序文本:#include"stdio.h"voidmain(){floati;floatsum;sum=1.0;i=2.0;while(i<=100){sum+=1/i;i=i+2;}printf("sum=%f\n",sum);}⑴打開調(diào)試器首先定位光標(biāo)到main函數(shù)的函數(shù)首部所在行,選“編譯”“開始調(diào)試”“Runtocursor”,出現(xiàn)如下圖8所示界面。在該界面中,“debug”菜單取代了“編譯”菜單。“debug”菜單的主要子菜單如下圖9。Go(去)………………連續(xù)執(zhí)行程序Restart……………不管程序運(yùn)行到何處,重新從頭開始執(zhí)行程序StopDebugging……停止調(diào)試器StepInto…………單步進(jìn)入語(yǔ)句內(nèi)執(zhí)行,如函數(shù)調(diào)用、復(fù)合語(yǔ)句內(nèi)等StepOver…………單步越過(guò)語(yǔ)句執(zhí)行,即一步執(zhí)行完函數(shù)調(diào)用或復(fù)合語(yǔ)句StepOut……………單步從語(yǔ)句的執(zhí)行中跳出。如從函數(shù)內(nèi)跳出或從復(fù)合語(yǔ)句中跳出。RuntoCursor……程序一次執(zhí)行到光標(biāo)所在位置暫停⑵在圖10左下角的小窗口中,可以觀察程序中用到的變量的取值情況。如果圖7程序中變量很多,可在右下角的窗口中設(shè)定一些特別關(guān)心的變量,并可設(shè)定幾組。例如,當(dāng)選擇了“stepinto”命令后,屏幕如下圖10所示,在重點(diǎn)變量觀察窗的Name列輸入i,然后單步執(zhí)行程序,觀察i的值Value變化情況。有關(guān)這方面的更多內(nèi)容,請(qǐng)參閱MicrosoftVisualC++6.0手冊(cè)。三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),將自己在這次實(shí)驗(yàn)中所學(xué)到的C語(yǔ)言程序上機(jī)操作方法及步驟寫在實(shí)驗(yàn)報(bào)告中。連續(xù)執(zhí)行程序連續(xù)執(zhí)行程序重新開始程序執(zhí)行單步進(jìn)入結(jié)構(gòu)內(nèi)執(zhí)行單步越過(guò)結(jié)構(gòu)執(zhí)行單步從結(jié)構(gòu)的執(zhí)行中跳出執(zhí)行到光標(biāo)處暫停停止調(diào)試器現(xiàn)有變量觀察窗重點(diǎn)變量觀察窗圖9圖10實(shí)驗(yàn)二順序結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.掌握scanf和printf的主要用法。2.掌握常用轉(zhuǎn)換控制符的用法。3.掌握賦值語(yǔ)句的用法。4.掌握算術(shù)運(yùn)算符的運(yùn)算規(guī)律。二、實(shí)驗(yàn)內(nèi)容1.編輯如下程序并運(yùn)行,記錄程序的輸出結(jié)果,體會(huì)格式輸出的使用。#include"stdio.h"voidmain(){printf("%d\n",42);printf("%5d\n",42);printf("%f\n",123.45);printf("%12f\n",123.45);printf("%e\n",123.45);printf("%13e\n",123.45);printf("%g\n",123.45);printf("%8g\n",123.45);printf("%.5d\n",42);printf("%.0d\n",42);printf("%8.3f\n",123.45);printf("%8.1f\n",123.55);printf("%8.0f\n",123.55);printf("%g\n",123.56789);}2.編輯如下的程序,并上機(jī)運(yùn)行3次,在每次運(yùn)行提供輸入數(shù)據(jù)時(shí)分別采用數(shù)據(jù)之間插入空格、每輸入一個(gè)數(shù)據(jù)就按回車鍵、數(shù)據(jù)之間用TAB鍵分割,看結(jié)果有什么不同?#include"stdio.h"voidmain(){intx,y,t;printf("Enterx&y:\n");scanf("%d%d",&x,&y);printf("x=%dy=%d\n",x,y);t=x;x=y;y=t;printf("x=%dy=%d\n",x,y);}3.改錯(cuò)題。下列程序多處有錯(cuò),請(qǐng)通過(guò)上機(jī)改正。使之符合下面的要求。#include"stdio.h"voidmain(){doublea,b,c,s,v;printf(Inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("a=%db=%dc=%d\n",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}當(dāng)本程序運(yùn)行時(shí),要求按如下方式顯示和輸入:Inputa,b,c:2.02.03.0(此處的2.02.03.0為用戶輸入的)a=2.000000b=2.000000c=3.000000s=4.000000v=12.0000004.編輯如下程序:/* 字符類型定義及使用*/#include"stdio.h"

voidmain()

{

charc1,c2;

c1='a';

c2=‘b’;

printf(“%c%c\n”,c1,c2);

}(1運(yùn)行此程序,記錄運(yùn)行結(jié)果。(2在最后增加一個(gè)語(yǔ)句:printf(“%d%d\n”,c1,c2);再運(yùn)行,并記錄分析結(jié)果。(3再將第5行charc1,c2;改為:intc1,c2;再使之運(yùn)行,并觀察記錄結(jié)果。(4再將第6、7行改為:

c1=a;/*不用單引號(hào)*/c2=b;再運(yùn)行,記錄分析其運(yùn)行結(jié)果。(5再將第6、7行改為:

c1=”a”;/*用雙引號(hào)*/

c2=”b”;再運(yùn)行,記錄分析其運(yùn)行結(jié)果。(6再將第6、7行改為:

c1=300;/*用大于255的整數(shù)*/c2=400;

再運(yùn)行,記錄分析其運(yùn)行結(jié)果。5.編輯如下程序:/* 自增自減運(yùn)算符*/#include"stdio.h"

voidmain()

{

inti,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n);

}(1)運(yùn)行程序,記錄i、j、m、n各變量的值,分別作以下改動(dòng)并運(yùn)行。

(2)將第7、8行改為下面所示,再運(yùn)行。

m=i++;

n=++j;記錄i、j、m、n各變量的值

(3)在(1)的基礎(chǔ)上,將printf語(yǔ)句改為:

printf(“%d,%d”,++i,++j);運(yùn)行程序,記錄i、j、m、n各變量的值。(4)再將printf語(yǔ)句改為:

printf(“%d,%d,%d,%d”,i,j,i++,j++);運(yùn)行程序,記錄i、j、m、n各變量的值。(5)再修改程序如下,運(yùn)行程序記錄i、j、m、n各變量的值。#include"stdio.h"

voidmain()

{

inti,j,m=0,n=0;

i=8;

j=10;

m+=i++;n-=--j;

printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);

}6.編程題。編寫程序,完成對(duì)于任意輸入的兩個(gè)整數(shù),求出它們的商和余數(shù)并進(jìn)行輸出。三、對(duì)上述實(shí)驗(yàn)內(nèi)容進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)三表達(dá)式的計(jì)算一、實(shí)驗(yàn)?zāi)康恼莆账阈g(shù)表達(dá)式、逗號(hào)表達(dá)式、賦值表達(dá)式的計(jì)算。特別注意運(yùn)算符%、/(整數(shù)的相除)、++和--運(yùn)算的規(guī)律。二、實(shí)驗(yàn)內(nèi)容1.已知三角形的三邊a,b,c,求三角形面積的公式為:area=sqrt(s(s-a)(s-b)(s-c))其中:s=(a+b+c)/2,sqrt(x)表示x的平方根。要求編一程序,對(duì)任意輸入的a,b,c值,計(jì)算并輸出三角形的面積范圍。提示:sqrt是C的標(biāo)準(zhǔn)庫(kù)函數(shù),使用該函數(shù)應(yīng)將庫(kù)文件“math.h”包含到源文件中。另外注意三角形三邊的基本關(guān)系。2.對(duì)以下程序進(jìn)行分析,看程序的輸出結(jié)果應(yīng)是什么,然后上機(jī)運(yùn)行該程序看實(shí)際結(jié)果與你分析的有無(wú)不同,找出原因。#include"stdio.h"voidmain(){intx=1,y=2,t;floatm;t=x/y;m=x/y;printf("%d\t%8.3f\n",t,m);t=x/(float)y;m=x/(float)y;printf("%d\t%8.3f\n",t,m);t=(float)x/y;m=(float)x/y;printf("%d\t%8.3f\n",t,m);}3.編輯以下程序:對(duì)程序進(jìn)行分析,看程序的輸出結(jié)果在下列各種情況下應(yīng)是什么,然后上機(jī)運(yùn)行該程序看實(shí)際結(jié)果(寫在實(shí)驗(yàn)報(bào)告里)與你分析的有無(wú)不同,找出原因。#include"stdio.h"voidmain(){intx,y,t;doublea;floatb;intc;scanf(“%d%d”,&x,&y);c=b=a=20/3;t=(x%y,x/y);printf("%d%d\n",x--,--y);printf("%d\n",t);printf("%d\n",(x=5*6,x*4,x+5));printf("%d%f%f\n",c,b,a);}⑴程序運(yùn)行時(shí),在鍵盤上輸入203⑵程序運(yùn)行時(shí),在鍵盤上輸入155三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告,把你通過(guò)本實(shí)驗(yàn)掌握的內(nèi)容整理出來(lái)。實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì)(一)一、實(shí)驗(yàn)?zāi)康?.掌握關(guān)系表達(dá)式和邏輯表達(dá)式的使用。

2.熟悉選擇結(jié)構(gòu)程序設(shè)計(jì)。

3.熟練使用if語(yǔ)句進(jìn)行程序設(shè)計(jì)。

4.使用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。二、實(shí)驗(yàn)內(nèi)容1.運(yùn)行以下程序,說(shuō)明表達(dá)式值1和表達(dá)式值2的不同。#include"stdio.h"voidmain(){ inta=3,b=2,c=1,d=0; printf("表達(dá)式1=%d\n",d==a>b+c); printf("表達(dá)式2=%d\n",d=a>b+c);}2.以下程序的功能是:從鍵盤輸入一個(gè)字符型數(shù)據(jù),若輸入一個(gè)數(shù)字字符(‘0’-‘9#include"stdio.h"voidmain(){charc;scanf("%c",&c);if('0'<=c<='9')/*條件表達(dá)式*/{c=c-'0';printf("c=%d\n",c);}elseprintf("dataerror!\n");}實(shí)驗(yàn)步驟:⑴上機(jī)調(diào)試以上程序;⑵輸入‘0’—‘9’之間的任何字符,驗(yàn)證輸出結(jié)果是否和程序功能相符合;⑶輸入‘0’—‘9’之外的任何字符,例如,輸入字母’a’,驗(yàn)證輸出結(jié)果是否和程序功能相符合;⑷將條件表達(dá)式if('0'<=c<='9')改為if('0'<=c&&c<='9'),重復(fù)2、3步驟。分析、比較以上的輸出結(jié)果,總結(jié)字符變量c的取值在‘0’-‘9’之間在C語(yǔ)言編程中的正確描述。3.if語(yǔ)句的第一種形式為基本形式if(表達(dá)式)語(yǔ)句;其語(yǔ)義是:如果表達(dá)式的值非零(為真),則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。編程:輸入兩個(gè)整數(shù),輸出其中的大數(shù)。提示:輸入兩個(gè)數(shù)a,b。把a(bǔ)先賦予變量max,再用if語(yǔ)句判別max和b的大小,如max小于b,則把b賦予max。因此max中總是大數(shù),最后輸出max的值。4.if語(yǔ)句的第二種形式為if-else形式if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;其語(yǔ)義是:如果表達(dá)式的值非零(為真),則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2。程序填空題。下列程序用于完成對(duì)輸入的整數(shù)判斷它是奇數(shù)還是偶數(shù),并給出相應(yīng)的提示。試完成它缺少的部分,并上機(jī)驗(yàn)證。#include"stdio.h"voidmain(){intx;scanf("%d",&x);if()printf("x=%disEven\n",x);elseprintf("x=%disOdd\n",x);}編程:輸入兩個(gè)整數(shù),輸出其中的大數(shù)。提示:改用if-else語(yǔ)句判別a,b的大小,若a大,則輸出a,否則輸出b。5.if語(yǔ)句的第三種形式為if-else-if形式(嵌套的if)當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語(yǔ)句,其一般形式為:if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;…elseif(表達(dá)式m)語(yǔ)句m;else語(yǔ)句n;其語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n。然后繼續(xù)執(zhí)行后續(xù)程序。編程:要求判別鍵盤輸入字符的類別??梢愿鶕?jù)輸入字符的ASCII碼來(lái)判別類型。由ASCII碼表可知ASCII值小于32的為控制字符。在“0”和“9”之間的為數(shù)字,在“A”和“Z”之間為大寫字母,在“a”和“z”之間為小寫字母,其余則為其它字符。這是一個(gè)多分支選擇的問(wèn)題,用if-else-if語(yǔ)句編程,判斷輸入字符ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為“g6.分析以下程序的運(yùn)行結(jié)果并上機(jī)調(diào)試。程序1:#include"stdio.h"voidmain(){ inta=3,b=4,c=5,d=0; if(a>b)d=a;else if(c>b)d=c;elsed=b; printf("d=%d\n",d);}程序2:#include"stdio.h"voidmain(){ inta=3,b=4,c=5,d=0; if(a>b)if(c>b)d=c;elsed=b; elsed=a; printf("d=%d\n",d);}程序3:#include"stdio.h"voidmain(){ inta=3,b=4,c=5,d=0; if(a>b)if(c>b)d=c;elsed=b; printf("d=%d\n",d);}程序4:

#include"stdio.h"voidmain(){ inta=3,b=4,c=5,d=0; if(a>b) {if(c>b)d=c;}elsed=b; printf("d=%d\n",d);}編程:比較鍵盤依次輸入的兩個(gè)數(shù)a和b的大小關(guān)系,并根據(jù)大小關(guān)系分別輸出1(若a>b)、0(若a=b)、-1(若a<b)。7.條件運(yùn)算符和條件表達(dá)式由條件運(yùn)算符組成條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2的值作為條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。用條件表達(dá)式對(duì)4中要求的輸出兩個(gè)數(shù)中的大數(shù)的程序重新編程。8.switch語(yǔ)句C語(yǔ)言還提供了另一種用于多分支選擇的switch語(yǔ)句,其一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;case常量表達(dá)式2:語(yǔ)句2;…case常量表達(dá)式n:語(yǔ)句n;default:語(yǔ)句n+1;}在switch語(yǔ)句中,“case常量表達(dá)式”只相當(dāng)于一個(gè)語(yǔ)句標(biāo)號(hào),表達(dá)式的值和某標(biāo)號(hào)相等則轉(zhuǎn)向該標(biāo)號(hào)執(zhí)行,但不能在執(zhí)行完該標(biāo)號(hào)的語(yǔ)句后自動(dòng)跳出整個(gè)switch語(yǔ)句。這是與前面介紹的if語(yǔ)句完全不同的,應(yīng)特別注意。程序分析題。分析以下程序,對(duì)分析的結(jié)果上機(jī)檢驗(yàn)。#include"stdio.h"voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}//abccase2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}在程序中的//abc前面,}后面添加一個(gè)break;再次運(yùn)行該程序,程序結(jié)果有何變化?在實(shí)驗(yàn)報(bào)告中對(duì)結(jié)果作出解釋。三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告,把你通過(guò)本實(shí)驗(yàn)掌握的內(nèi)容整理出來(lái)。實(shí)驗(yàn)五選擇結(jié)構(gòu)程序設(shè)計(jì)(二)一、實(shí)驗(yàn)?zāi)康倪M(jìn)一步掌握選擇結(jié)構(gòu)程序設(shè)計(jì),熟練運(yùn)用選擇語(yǔ)句編寫程序,提高調(diào)試和修改程序的能力。二、實(shí)驗(yàn)內(nèi)容1.輸入三個(gè)整數(shù),輸出最大數(shù)和最小數(shù)。分析:首先比較輸入的a,b的大小,并把大數(shù)裝入max,小數(shù)裝入min中,然后再與c比較,若max小于c,則把c賦予max;如果c小于min,則把c賦予min。因此max內(nèi)總是最大數(shù),而min內(nèi)總是最小數(shù)。最后輸出max和min的值即可。2.有一函數(shù):y=xx<12x-11=<x<103x-11x>=10用scanf函數(shù)輸入x的值(分別為x<1,1—10,>=10三種情況),求y值。分析:y是一個(gè)分段表達(dá)式。要根據(jù)x的不同區(qū)間來(lái)計(jì)算y的值。所以應(yīng)使用if語(yǔ)句。3.編寫程序,輸入三角形三邊a、b、c,判斷a、b、c能否構(gòu)成三角形,若不能則輸出相應(yīng)的信息,若能則判斷組成的是等腰、等邊、直角還是一般三角形。實(shí)驗(yàn)步驟與要求:(1)輸入一組數(shù)據(jù)3,4,8,觀察程序運(yùn)行結(jié)果,并與實(shí)驗(yàn)二中程序2做比較(2)另外再輸入幾組數(shù)據(jù)進(jìn)行測(cè)試:3,4,53,3,33,3,5(3)如果程序有誤,可采用“單步跟蹤執(zhí)行”的調(diào)試方法,確定錯(cuò)誤的出處。4.輸入某學(xué)生的成績(jī),經(jīng)處理后給出學(xué)生的等級(jí),等級(jí)分類如下:90分以上(包括90):A

80至90分(包括80):B

70至80分(包括70):C

60至70分(包括60):D

60分以下:E方法一:(用if語(yǔ)句的嵌套)分析:由題意知如果某學(xué)生成績(jī)?cè)?0分以上,等級(jí)為A;否則,如果成績(jī)大于80分,等級(jí)為B;否則,如果成績(jī)大于70分,等級(jí)為C;否則,如果成績(jī)大于60分為D;否則,如果成績(jī)小于60分,等級(jí)為E;但當(dāng)我們輸入成績(jī)時(shí)也可能輸錯(cuò),出現(xiàn)小于0或大于100,這時(shí)也要做處理,輸出出錯(cuò)信息。因此,再用if嵌套前,應(yīng)先判斷輸入的成績(jī)是否在0~100之間。方法二:用switch語(yǔ)句分析:switch語(yǔ)句是用于處理多分支的語(yǔ)句。注意,case后的表達(dá)式必須是一個(gè)常量表達(dá)式,所以在以用switch語(yǔ)句之前,必須把0~100之間的成績(jī)分別化成相關(guān)的常量。所有A(除100以外),B,C,D類的成績(jī)的共同特點(diǎn)是十位數(shù)相同,此外都是E類。則由此可得把score除十取整,化為相應(yīng)的常數(shù)。輸入測(cè)試數(shù)據(jù),調(diào)試程序。測(cè)試數(shù)據(jù)要覆蓋所有路徑,注意臨界值,例如此題中得100分,60分,0分以及小于0和大于100的數(shù)據(jù)。5.編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(+)、減(-)、乘(*)、除(/)用if及switch語(yǔ)句實(shí)現(xiàn)。程序運(yùn)行舉例:Pleaseentertheexpression:22.12+12.10屏幕提示鍵盤輸入屏幕提示鍵盤輸入22.12+12.10=34.22程序輸出程序輸出6.用scanf函數(shù)輸入一個(gè)年份year,計(jì)算這一年2月份的天數(shù)days,然后用輸出函數(shù)printf輸出days。實(shí)驗(yàn)步驟與要求:

(1)有變量定義為整型。

(2)輸入前要加提示語(yǔ)句。

(3)輸出結(jié)果前要有必要的文字說(shuō)明。

說(shuō)明:

(1)閏年的條件是:year能被4整除但不能被100整除,或者year能被400整除。

(2)如果year是閏年,則2月份的天數(shù)為29天,不是閏年則為28天。[問(wèn)題討論]對(duì)于多分支選擇結(jié)構(gòu)何時(shí)使用if語(yǔ)句的嵌套,何時(shí)使用switch語(yǔ)句?三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告,把你通過(guò)本實(shí)驗(yàn)掌握的內(nèi)容整理出來(lái)。實(shí)驗(yàn)六循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(一)一、實(shí)驗(yàn)?zāi)康?.熟練掌握三種循環(huán)語(yǔ)句的應(yīng)用。2.熟練掌握循環(huán)結(jié)構(gòu)的嵌套。3.掌握break和continue語(yǔ)句的使用。4.練習(xí)調(diào)試與修改程序。二、實(shí)驗(yàn)內(nèi)容1.while語(yǔ)句while語(yǔ)句的一般形式為:while(表達(dá)式)語(yǔ)句;while語(yǔ)句的語(yǔ)義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語(yǔ)句。編程:求1-100的奇數(shù)和。提示:參考教材107頁(yè),例6.2,循環(huán)變量的步長(zhǎng)值為2。2.do-while語(yǔ)句do-while語(yǔ)句的一般形式為:do{語(yǔ)句;}while(表達(dá)式);do-while語(yǔ)句的語(yǔ)義是:先執(zhí)行循環(huán)體語(yǔ)句一次,再判別表達(dá)式的值,若為真(非0)則繼續(xù)循環(huán),否則終止循環(huán)。編程:求1—100的偶數(shù)和。3.for語(yǔ)句其一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)3)語(yǔ)句;for語(yǔ)句的語(yǔ)義是:⑴首先計(jì)算表達(dá)式1的值。⑵再計(jì)算表達(dá)式2的值,若值為真(非0)則執(zhí)行循環(huán)體一次,否則結(jié)束循環(huán)。⑶執(zhí)行循環(huán)體后再計(jì)算表達(dá)式3的值,轉(zhuǎn)回第2步重復(fù)執(zhí)行。下列程序用于輸出fibnocci數(shù)列的前20項(xiàng),每行輸出5個(gè)。請(qǐng)?zhí)羁?。說(shuō)明:fibnocci數(shù)列的前兩項(xiàng)均為1,以后各項(xiàng)等于其前兩項(xiàng)之和。#include"stdio.h"voidmain(){inti,f1,f2,f3,n;f1=1;f2=1;printf("\n%d%d",f1,f2);n=2;for(i=1;;i++){if()printf("\n");;printf("%d",f3);n++;f1=f2;f2=f3;}}編程:⑴用for語(yǔ)句計(jì)算s=3+33+333⑵求5!4.break/continue語(yǔ)句:while(表達(dá)式while(表達(dá)式1){…if(表達(dá)式2)break;…}while(表達(dá)式1){…if(表達(dá)式2)conitue;…}結(jié)束本次循環(huán)結(jié)束整個(gè)循環(huán)#include"stdio.h"voidmain(){#include"stdio.h"voidmain(){ inti,sum=0; for(i=1;i<=10;i++){if(i<=5)continue;sum=sum+i;}printf("sum=%5d\n",sum);}#include"stdio.h"voidmain(){ inti,sum=0; for(i=1;i<=10;i++){if(i>5)break;sum=sum+i;}printf("sum=%5d\n",sum);}編程:輸出100以內(nèi)能被7整除的數(shù)。

提示:對(duì)7~100的每一個(gè)數(shù)進(jìn)行測(cè)試,如該數(shù)不能被7整除,即模運(yùn)算不為0,則由continue語(yǔ)句轉(zhuǎn)去下一次循環(huán)。只有模運(yùn)算為0時(shí),才能執(zhí)行后面的printf語(yǔ)句,輸出能被7整除的數(shù)。(參考教材115頁(yè),例6.5)5.循環(huán)嵌套三種循環(huán)控制語(yǔ)句可以互相嵌套,即在一個(gè)循環(huán)體內(nèi)部又可以出現(xiàn)另一循環(huán)。輸出100以內(nèi)的素?cái)?shù)。素?cái)?shù)是只能被1和它本身整除的數(shù)。判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到這個(gè)數(shù)減1(或2到sqrt(這個(gè)數(shù))),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。#include"math.h"#include"stdio.h"voidmain(){intn,i;for(n=2;n<=100;n++){for(i=2;i<n;i++)if(n%i==0)break;if(i>=n)printf("%d\t",n);}}本程序中,第一層循環(huán)表示對(duì)2~100的數(shù)逐個(gè)判斷是否是素?cái)?shù),在第二層循環(huán)中則對(duì)數(shù)n用2~n-1逐個(gè)去除,若某次除盡則跳出該層循環(huán),說(shuō)明不是素?cái)?shù)。如果在所有的數(shù)都是未除盡的情況下結(jié)束循環(huán),則為素?cái)?shù),此時(shí)有i>=n,故可經(jīng)此判斷后輸出素?cái)?shù)。然后轉(zhuǎn)入下一次大循環(huán)。編程:⑴求100-200之間的素?cái)?shù),把它們按每行5個(gè)素?cái)?shù)全部顯示出來(lái),并給出素?cái)?shù)的個(gè)數(shù)。

⑵輸出9*9口訣表。

提示:分行與列考慮,共9行9列,外循環(huán)控制行,內(nèi)循環(huán)控制列。

[內(nèi)容討論]

1.小結(jié)三種形式的循環(huán)使用的區(qū)別。

2.小結(jié)循環(huán)嵌套的規(guī)定和應(yīng)用三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告,把你通過(guò)本實(shí)驗(yàn)掌握的內(nèi)容整理出來(lái)。實(shí)驗(yàn)七循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(二)一、實(shí)驗(yàn)?zāi)康倪M(jìn)一步掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì),熟練運(yùn)用循環(huán)語(yǔ)句編寫程序,提高調(diào)試和修改程序的能力。二、實(shí)驗(yàn)內(nèi)容1.編程求1+2!+3!+...+20!的和。分析:此程序只是把累加變成了累乘2.求和值,直到最后一項(xiàng)的絕對(duì)值小于10-4為止。參考教材116頁(yè),例6.63.輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。分析:計(jì)算兩個(gè)數(shù)的最大公約數(shù);首先,隨機(jī)輸入兩個(gè)數(shù)m,n(默認(rèn)m>n,若m<n,則交換m與n);其次,使k為m除以n的余數(shù),如果m能被n整除,則k值為0,n為這兩個(gè)數(shù)的最大公約數(shù),否則,使k代替n,n代替m,重復(fù)以上過(guò)程,直到k值為0。4.分析下面程序的運(yùn)行結(jié)果,然后上機(jī)運(yùn)行,進(jìn)一步體會(huì)continue語(yǔ)句和break語(yǔ)句。#include"stdio.h"

voidmain()

{intn;

while(1)

{printf("Enteranumber:");

scanf("%d",&n);

if(n%2==1)

{printf("Isaid");

continue;}

break;

}

printf("Thanks.Ineededthat!");

}5.打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?53=13+53+33。分析:利用for循環(huán)控制100—999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。6.打印出以下圖形*****************************三、對(duì)上述實(shí)驗(yàn)進(jìn)行總結(jié),寫出實(shí)驗(yàn)報(bào)告,把你通過(guò)本實(shí)驗(yàn)掌握的內(nèi)容整理出來(lái)。實(shí)驗(yàn)八數(shù)組應(yīng)用(一)一、實(shí)驗(yàn)?zāi)康恼莆找痪S數(shù)組的定義及初始化。掌握一維數(shù)組元素的引用及其應(yīng)用。二、實(shí)驗(yàn)內(nèi)容閱讀下面程序,寫出程序運(yùn)行結(jié)果,并且上機(jī)進(jìn)行驗(yàn)證。(1)#include“stdio.h”voidmain(){inti,n[4]={0,0,0,0};for(i=1;i<4;i++)

{if(i==3)break;n[i]=n[i-1]+1;}printf(“n[i-1]=%dn[i]=%d\n”,n[i-1],n[i]);}(2)#include"stdio.h"voidmain(){charch[]={'0','1','2','3','4','5','6','7','8','9'};inti=0,m=2,r,x=42;charb[80];while(x){r=x%m;x/=m;b[i++]=ch[r];}for(--i;i>=0;i--)printf("%c",b[i]);printf("\n");}2.程序填空(根據(jù)題意在空白處填入適當(dāng)?shù)膬?nèi)容,使程序變得完整。并上機(jī)進(jìn)行調(diào)試驗(yàn)證)(1)程序說(shuō)明:下列程序完成的是插入排序功能:數(shù)組a中存放一個(gè)遞增數(shù)列,輸入一個(gè)整數(shù)x,將它插入到數(shù)組中,使之仍為一個(gè)有序數(shù)列。#include"stdio.h"#defineN10voidmain(){inta[]={1,10,20,30,40,50,60,70,80,90},x,i,p;scanf("%d",&x);for(i=0,p=N;i<N;i++)if(x<a[i]){p=i;____________;}for(i=N-1;i>=p;___________)a[i+1]=a[i];_______________;printf("%d",x);for(i=0;i<=N;i++)printf("%5d",a[i]);printf("\n");}(2)程序說(shuō)明:下面程序完成的是折半查找。A數(shù)組中存放的是n個(gè)由大到小已經(jīng)排好序的數(shù)列,從這n個(gè)數(shù)中查找x的值是否存在。其基本思想是:在查找范圍里,將x與處于中間位置上的數(shù)比較,如果相等,則查找成功,如果小于該元素,則在較小的一半元素里再進(jìn)行折半查找;如果x大于該元素,則在較大的一半元素里再進(jìn)行折半查找。變量top,bottom,mid分別指向查找范圍的頂部、底部和中間位置。#include"stdio.h"#definen10main(){inta[n],find;intx,i,top,bottom,mid;printf("inputthesortednumbers:\n");for(i=0;i<n;i++)scanf("%d",__________);printf("inputthenumbertofind:\n");scanf("%d",&x);find=0;top=0;bottom=n-1;if(x<=a[0]&&__________)while(!find&&top<=bottom){mid=_______________;if(x==a[mid]) {find=1; printf("x=%dposition=%d\n",x,mid);}elseif(_______________) bottom=mid-1; else top=mid+1;}if(__________)printf("thenumber%disnotinthetable",x);}3.程序設(shè)計(jì)(根據(jù)題意編寫程序并上機(jī)進(jìn)行調(diào)試)。(1)編寫程序完成如下功能:輸入10個(gè)數(shù)存入一維數(shù)組,然后再按逆序重新存放后輸出。(2)編寫程序完成如下功能:從鍵盤輸入兩個(gè)字符串ch2、ch1,然后將字符串ch2連接到字符串ch1的后面,并輸出連接后的字符串。(3)編寫程序完成如下功能:現(xiàn)有兩個(gè)已按升序排好的數(shù)組,將它們合并為一個(gè)升序排序的數(shù)組(歸并排序)。算法:兩個(gè)數(shù)組合并時(shí),可為每個(gè)數(shù)組各安排一個(gè)指針,從第一個(gè)元素開始依次比較兩數(shù)組對(duì)應(yīng)元素,小的取下來(lái)順序放入新的數(shù)組,取下所指元素的指針后移,再比較,依此類推,直到其中一個(gè)數(shù)組的元素已全部放入新數(shù)組,再把另一數(shù)組余下的元素全部順序放入新數(shù)組,歸并完成。實(shí)驗(yàn)九數(shù)組應(yīng)用(二)一、實(shí)驗(yàn)?zāi)康恼莆斩S數(shù)組的定義和初始化。掌握二維數(shù)組元素的引用及其應(yīng)用。二、實(shí)驗(yàn)內(nèi)容1.閱讀下面程序,寫出程序運(yùn)行結(jié)果,并且上機(jī)進(jìn)行驗(yàn)證。(1)#include“stdio.h”voidmain(){inta[][3]={9,7,5,3,1,2,4,6,8};inti,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j)s1=s1+a[i][j];if(i+j==2)s2=s2+a[i][j]}printf("s1=%ds2=%d",s1,s2);}(2)#include"stdio.h"voidmain(){intr[5]={1,2,3,4,5};inti,j,a[5][5];for(i=0;i<=4;i++){for(j=i;j<=4;j++) a[i][j]=r[j-i];for(j=0;j<i;j++) a[i][j]=r[i-j];}for(i=0;i<5;i++){for(j=0;j<5;j++) printf("%2d",a[i][j]);printf("\n");}}2.程序填空(根據(jù)題意在空白處填入適當(dāng)?shù)膬?nèi)容,使程序變得完整。并上機(jī)進(jìn)行調(diào)試驗(yàn)證)(1)程序說(shuō)明:下面程序分別輸出方陣中主對(duì)角線、副對(duì)角線上元素的和suml和sum2(主對(duì)角線為從矩陣的左上角至右下角的連線,副對(duì)角線為從矩陣的右上角至左下角的連線).

#include"stdio.h"#defineSIZE5voidmain(){inta[SIZE][SIZE],m,n,sum1,sum2;for(m=0;m<SIZE;m++)for(n=0;n<SIZE;n++) scanf("%d",&a[m][n]);sum1=sum2=________;for(m=0;m<SIZE;m++) { sum1=sum1+______; sum2=sum2+______; } printf("sum1=%dsum2=%d\n",sum1,sum2);}(2)程序說(shuō)明:下面程序打印出如下所示的楊輝三角行(打印10行)。1121331464115101051…….#include"stdio.h"voidmain(){inti,j,a[10][10]={{1},{1,1}};for(i=2;i<10;i++) {a[i][0]=1;___________; for(j=0;j<i;j++) a[i][j]=a[i-1][j]+____________; }for(i=0;i<10;i++) {for(j=0;j<=i;j++) printf("%4d",a[i][j]);___________; }}3.程序設(shè)計(jì)(根據(jù)題意編寫程序并上機(jī)進(jìn)行調(diào)試)。(1)設(shè)有一個(gè)3行5列的數(shù)組,編寫程序從鍵盤輸入數(shù)據(jù),并找出二維數(shù)組中最大元素的值及其行、列下標(biāo)。(2)已知A是一個(gè)3×4矩陣,B是一個(gè)4×5矩陣,編寫程序,從鍵盤輸入矩陣A、B的值,求A×B得到的新,并輸出矩陣C。(3)設(shè)某班有20個(gè)學(xué)生,每個(gè)學(xué)生選修了三門課,編寫程序,輸入20個(gè)學(xué)生三門課的成績(jī),計(jì)算每個(gè)學(xué)生的平均成績(jī),最后輸出每個(gè)學(xué)生三門課的成績(jī)及平均成績(jī)。實(shí)驗(yàn)十函數(shù)應(yīng)用(一)一、實(shí)驗(yàn)?zāi)康?.掌握函數(shù)的定義、函數(shù)的說(shuō)明和調(diào)用。2.掌握函數(shù)的參數(shù)及其傳遞方式,函數(shù)值的正確返回。二、實(shí)驗(yàn)內(nèi)容1.閱讀下面程序,寫出程序運(yùn)行結(jié)果,并且上機(jī)進(jìn)行驗(yàn)證。(1)#include"stdio.h"intswap(inta,intb){intc,s;c=a;a=b;b=c;s=a+b;returns;}voidmain(){inta,b,s;a=3;b=4;s=swap(a,b);printf("a=%db=%ds=%d\n",a,b,s);}(2)#include"stdio.h"intfun(intnum){intk=1;do{k*=num%10;num/=10;while(num);return(k);}voidmain(){intn=26;printf("%d\n",fun(n));}2.程序填空(根據(jù)題意在空白處填入適當(dāng)?shù)膬?nèi)容,使程序變得完整。并上機(jī)進(jìn)行調(diào)試驗(yàn)證)(1)程序說(shuō)明:下面程序?qū)⑤斎氲氖M(jìn)制數(shù)n轉(zhuǎn)換為b進(jìn)制數(shù),并將轉(zhuǎn)換結(jié)果輸出。轉(zhuǎn)換的方法是:除b取余法。#include"stdio.h"voidtransfer(intm,intk){inta[20],i;for(i=0;m;i++){a[i]=;m/=k;}for(;i>=0;i--)printf("%d",a[i]);}voidmain(){intb,n;scanf("%d%d",);;}(2)程序說(shuō)明:歌德巴赫猜想指出:任何一個(gè)充分大的偶數(shù)都可以表示為兩個(gè)素?cái)?shù)之和,例如4=2+26=3+38=3+5…50=3+47。下面程序?qū)?-50之間的所有偶數(shù)用兩個(gè)素?cái)?shù)之和表示,判斷一個(gè)整數(shù)是否為素?cái)?shù)用函數(shù)prime完成。#include"stdio.h"intprime(intx){intk,flag=1;for(k=2;k<=x/2;k++)if(){flag=0;break;}return();}voidmain(){intm,n,k;for(m=4;m<=50;m++)for(n=2;n<m-1;n++)if(prime(n)&&) {printf("%d=%d+%d\n",)break;}}3.程序設(shè)計(jì)(根據(jù)題意編寫程序并上機(jī)進(jìn)行調(diào)試)。(1)編寫程序求組合數(shù),其中n,m由鍵盤輸入。要求設(shè)計(jì)一個(gè)函數(shù)fac(n)求某個(gè)正整數(shù)n的階乘。(2)孿生素?cái)?shù)是指兩個(gè)相差為2的素?cái)?shù)。例如3和5,5和7,11和13等。編寫程序輸出m對(duì)(m由鍵盤輸入)孿生素?cái)?shù)。要求設(shè)計(jì)函數(shù)prime用于判斷某整數(shù)是否素?cái)?shù)。(3)找出2~1000以內(nèi)的完全數(shù)。說(shuō)明:完全數(shù)是一個(gè)自然數(shù),它等于除本身以外的所有因子之和,例如:6=1+2+3,6就是一個(gè)完全數(shù)。要求定義一個(gè)函數(shù)來(lái)判斷并輸出實(shí)驗(yàn)十一函數(shù)應(yīng)用(二)一、實(shí)驗(yàn)?zāi)康?.掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用2.掌握數(shù)組做函數(shù)參數(shù)的用法3.掌握全局變量和局部變量的用法。4.掌握變量的存儲(chǔ)類別。二、實(shí)驗(yàn)內(nèi)容1.閱讀下面程序,寫出程序運(yùn)行結(jié)果,并且上機(jī)進(jìn)行驗(yàn)證。(1)#include“stdio.h”inta=3,b=5,c;intf(intb){c=a+b;printf("%d%d%d\n",a,b,c);}voidmain(){inta=8;f(3);printf("%d%d%d\n",a,b,c);}(2)#include"stdio.h"voiddtob(intn){inti;if(n>1){i=n%2;dtob(n/2);}elsei=n;printf("%d",i);}voidmain(){inti=11;printf("%d->",i);dtob(i);printf("(2)\n");}(3)#include"stdio.h"intf1(intn){staticintf=1;f=f*n;return(f);}voidmain(){inti;for(i=1;i<=4;i++)printf("%5d",f1(i));}2.程序填空(根據(jù)題意在空白處填入適當(dāng)?shù)膬?nèi)容,使程序變得完整。并上機(jī)進(jìn)行調(diào)試驗(yàn)證)(1)程序說(shuō)明:用一個(gè)一維數(shù)組存放10個(gè)學(xué)生的成績(jī),寫一個(gè)函數(shù)求出平均分、最高分和最低分。#include"stdio.h"floatmax=0;min=0;floataverage(floatscore[],intn){inti;floatave,sum=score[0];max=min=;for(i=1;i<n;i++){if(score[i]>max)max=score[i];elseif()min=score[i];sum=sum+score[i];}ave=sum/10;return;}voidmain(){floatave,score[10];inti;for(i=0;i<10;i++)scanf("%f",);ave=average()printf("max=%6.2fmin=%6.2faverage=%6.2f\n,max,min,ave);}(2)程序說(shuō)明:在主函數(shù)中讀入一字符串,再讀入一字符,然后調(diào)用函數(shù)delete在字符串中查找并刪除該字符,最后輸出該字符串。#include"stdio.h"voiddelete(charp[],charch){inti=0,j;while(){if(p[i]==ch)for(j=i;j<;j++)p[i]=p[i+1];elsei++;}voidmain(){charp[80],ch;inti=0,j;scanf("%s",p);scanf("%c",&ch);delete();printf("%s",);}3.程序設(shè)計(jì)(根據(jù)題意編寫程序并上機(jī)進(jìn)行調(diào)試)。(1)程序說(shuō)明:寫兩個(gè)函數(shù)分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果,兩個(gè)整數(shù)由鍵盤輸入。r=0r!=0r=0r!=0(2)程序說(shuō)明:用遞歸函數(shù)將一個(gè)整數(shù)n轉(zhuǎn)換成字符串,例如,輸入568,應(yīng)輸出字符串“865”。n的位數(shù)不確定,可以是任意位數(shù)的整數(shù)。(3)程序說(shuō)明:編寫程序?qū)?0個(gè)學(xué)生5門課的成績(jī)進(jìn)行處理,要求分別用函數(shù)實(shí)現(xiàn)如下幾個(gè)功能:=1\*GB3①輸入學(xué)生數(shù)據(jù);=2\*GB3②求每個(gè)學(xué)生的平均分;=3\*GB3③求每門課的平均分;=4\*GB3④輸出平均分最高的學(xué)生的成績(jī);=5\*GB3⑤輸出學(xué)生成績(jī)表(包括每個(gè)學(xué)生的平均成績(jī)和每門課的平均成績(jī))。實(shí)驗(yàn)十二指針的應(yīng)用一、實(shí)驗(yàn)?zāi)康恼莆罩羔樧兞康亩x和引用。二、實(shí)驗(yàn)內(nèi)容1.編制如下程序,并上機(jī)調(diào)試運(yùn)行,最后在實(shí)驗(yàn)報(bào)告上寫出運(yùn)行結(jié)果。使用指針作函數(shù)參數(shù),編寫用于交換兩個(gè)參數(shù)值的函數(shù)。調(diào)用該函數(shù)用于對(duì)從鍵盤輸入的兩個(gè)整數(shù)進(jìn)行交換。編寫一個(gè)函數(shù),用于對(duì)作為參數(shù)的數(shù)組中的元素求平均值,函數(shù)以指針方式進(jìn)行處理。平均值為函數(shù)的返回值。編寫一個(gè)函數(shù),用于對(duì)作為參數(shù)的數(shù)組中的元素求最大值,并將最大值從數(shù)組中刪除。函數(shù)的首部類似于下列形式:dele_max(int*,int*)其中第一個(gè)參數(shù)為指向數(shù)組的指針,第二個(gè)參數(shù)為指向數(shù)組長(zhǎng)度變量的指針。因此調(diào)用數(shù)組時(shí),使用如下形式:dele_max(a,&n);其中a為一數(shù)組名,n為存放a數(shù)組長(zhǎng)度的變量。2.程序分析題。分析以下程序,對(duì)分析的結(jié)果上機(jī)檢驗(yàn)。(1)下列程序使用指針操作數(shù)組有各種形式,體會(huì)其用法。#include“stdio.h”main(){inta[]={0,1,2,3,4},i,*p;for(i=0;i<=4;i++)printf("%d\t",a[i]);printf("\n");for(p=&a[0];p<=&a[4];p++)printf("%d\t",*p);printf("\n\n");for(p=&a[0],i=1;i<5;i++)printf("%d\t",p[i]);printf("\n");for(p=a,i=0;p+i<=a+4;p++,i++)printf("%d\t",*(p+i));printf("\n\n");for(p=a+4;p>=a;p--)printf("%d\t",*p);printf("\n");for(p=a+4,i=0;i<=4;i++)printf("%d\t",p[-i]);printf("\n");for(p=a+4;p>=a;p--)printf("%d\t",a[p-a]);printf("\n");}(2).#include"stdio.h"voidmain(){char*s2="aceg";*s2++;printf("%c\n",*s2);printf("%c\n",*(s2+1));printf("%c\n",*s2+1);}運(yùn)行以下程序,從鍵盤輸入MyBook,結(jié)果是什么?#include"stdio.h"charfun(char*s){if(*s<='Z'&&*s>='A')*s+=32;return(*s);}voidmain(){charc[80],*p;p=c;scanf("%s",p);while(*p){*p=fun(p);putchar(*p);p++;}printf("\n");}(4)#include"stdio.h"voidmain(){int*p,s[3][4],i,j,k=1;p=s[0];for(i=0;i<3;i++)for(j=0;j<4;j++)*p++=k++;p=s[0];for(i=0;i<3;i++)for(j=0;j<4;j++)printf((j%4)?"%4d":"\n%4d",*p++);}(5)#include"stdio.h"voidmain(){intnum[2][3],*p;intt,i,j,k=10;p=num[0];for(i=0;i<2;i++)for(j=0;j<3;j++){k++;*p=k;printf("k=%d\n",k);for(t=2;t<*p;t++){if(!(*p%t)){ j--; *p--;break;}}*p++;}p=num[0];for(i=0;i<2;i++)for(j=0;j<3;j++)printf((j%3)?"%4d":"\n%4d",*p++);}3。程序填空題下列程序的功能是在數(shù)組中同時(shí)查找最大元素下標(biāo)和最小元素下標(biāo),分別存放在main函數(shù)的變量max和min中,請(qǐng)?zhí)羁?include"stdio.h"voidfind(int*a,intn,int*max,int*min){inti;*max=*min=0;for(i=1;i<n;i++)if(a[i]>a[*max])________;elseif(a[i]<a[*min])________;}voidmain(){inta[]={5,8,7,6,2,7,3},max,min;find(________);printf("\n%d,%d\n",max,min);}。(2)以下程序調(diào)用invert函數(shù)按逆序重新放置a數(shù)組中的值,a數(shù)組中的值在main函數(shù)中讀入。#include"stdio.h"voidinvert(int*s,inti,intj){intt;if(i<j){t=*(s+i);*(s+i)=____;*(s+j)=t;invert(s,_____,j-1);}}voidmain(){inta[10],i;for(i=0;i<10;i++)scanf("%d",______);invert(a,0,10-1);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}實(shí)驗(yàn)十三使用結(jié)構(gòu)和聯(lián)合進(jìn)行程序設(shè)計(jì)【實(shí)驗(yàn)?zāi)康摹?.掌握結(jié)構(gòu)類型變量與數(shù)組的定義和使用。2.掌握使用結(jié)構(gòu)指針和結(jié)構(gòu)變量名使用結(jié)構(gòu)成員的方法。3.掌握鏈表的基本概念和操作。4.掌握聯(lián)合的概念與使用。【實(shí)驗(yàn)內(nèi)容】1.編程實(shí)現(xiàn):從鍵盤輸入5個(gè)人的姓名、年齡和性別,然后輸出。要求:分別通過(guò)結(jié)構(gòu)指針和結(jié)構(gòu)變量名輸出信息。用函數(shù)data_in實(shí)現(xiàn)數(shù)據(jù)輸入,用函數(shù)data_pout

溫馨提示

  • 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)論