《C語(yǔ)言程序設(shè)計(jì)》上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)上機(jī)指導(dǎo)及習(xí)題冊(cè)C語(yǔ)言程序設(shè)計(jì)上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)系- 2 -C語(yǔ)言程序設(shè)計(jì)上機(jī)實(shí)驗(yàn)指導(dǎo)手冊(cè)第一部分 上機(jī)實(shí)驗(yàn)的指導(dǎo)思想和要求一、上機(jī)實(shí)驗(yàn)的目的學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)課程不能滿(mǎn)足于“懂得了”,滿(mǎn)足于了解了語(yǔ)法和能看懂書(shū)上的程序,而應(yīng)當(dāng)掌握程序設(shè)計(jì)的全過(guò)程,即能獨(dú)立編寫(xiě)出源程序,獨(dú)立上機(jī)調(diào)試程序,獨(dú)立運(yùn)行程序和分析結(jié)果。“程序設(shè)計(jì)”是一門(mén)實(shí)踐性很強(qiáng)的課程,必須十分重視實(shí)踐環(huán)節(jié)。許多實(shí)際的知識(shí)不是靠聽(tīng)課和看書(shū)學(xué)到手的,而是通過(guò)長(zhǎng)時(shí)間的實(shí)踐積累的。要提倡通過(guò)實(shí)踐去掌握知識(shí)的方法。必須保證有足夠的上機(jī)實(shí)驗(yàn)時(shí)間,學(xué)習(xí)本課程應(yīng)該至少有30 小時(shí)的上機(jī)時(shí)間,最好能做到與

2、授課時(shí)間之比為1:1 。除了學(xué)校規(guī)定的上機(jī)實(shí)驗(yàn)以外,應(yīng)當(dāng)提倡學(xué)生自己課余抽時(shí)間多上機(jī)實(shí)踐。上機(jī)實(shí)驗(yàn)的目的,絕不僅是為了驗(yàn)證教材和講課的內(nèi)容,或者驗(yàn)證自己所編的程序正確與否。學(xué)習(xí)程序設(shè)計(jì),上機(jī)實(shí)驗(yàn)的目的是:(1)加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定,光靠課堂講授,既枯燥無(wú)味又難以記住,但它們是很重要的,初學(xué)者的程序出錯(cuò)往往錯(cuò)在語(yǔ)法上。通過(guò)多次上機(jī),就能自然地、熟練地掌握。通過(guò)上機(jī)來(lái)掌握語(yǔ)法規(guī)則是行之有效的方法。(2)熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是了解和熟悉C語(yǔ)言程序開(kāi)發(fā)的環(huán)境。一個(gè)程序必須在一定的外部環(huán)境下才能運(yùn)行,所謂“環(huán)境”,就是指所用的計(jì)算機(jī)系統(tǒng)的硬件和軟件條件,或者說(shuō)是工作平

3、臺(tái)。使用者應(yīng)該了解為了運(yùn)行一個(gè)C程序需要哪些必要的外部條件(例如硬件配置、軟件配置),可以利用哪些系統(tǒng)的功能來(lái)幫助自己開(kāi)發(fā)程序。每一種計(jì)算機(jī)系統(tǒng)的功能和操作方法不完全相同,但只要熟練掌握一兩種計(jì)算機(jī)系統(tǒng)的使用,再遇到其他系統(tǒng)時(shí)便會(huì)觸類(lèi)旁通,很快就能學(xué)會(huì)。(3)學(xué)會(huì)上機(jī)調(diào)試程序。也就是善于發(fā)現(xiàn)程序中的錯(cuò)誤,并且能很快地排除這些錯(cuò)誤,使程序能正確運(yùn)行。經(jīng)驗(yàn)豐富的人,在編譯連接過(guò)程中出現(xiàn)“出錯(cuò)信息”時(shí),一般能很快地判斷出錯(cuò)誤所在,并改正之。而缺乏經(jīng)驗(yàn)的人即使在明確的“出錯(cuò)提示”下也往往找不出錯(cuò)誤而求助于別人。要真正掌握計(jì)算機(jī)應(yīng)用技術(shù),就不僅應(yīng)當(dāng)了解和熟悉有關(guān)理論和方法,還要求自己動(dòng)手實(shí)現(xiàn)。對(duì)程序設(shè)計(jì)

4、來(lái)說(shuō),則要求會(huì)編程序并上機(jī)調(diào)試通過(guò)。因此調(diào)試程序不僅是得到正確程序的一種手段,而且它本身就是程序設(shè)計(jì)課程的一個(gè)重要的內(nèi)容和基本要求,應(yīng)給予充分的重視。調(diào)試程序固然可以借鑒他人的現(xiàn)成經(jīng)驗(yàn),但更重要的是通過(guò)自己的直接實(shí)踐來(lái)累積經(jīng)驗(yàn),而且有些經(jīng)驗(yàn)是只能“會(huì)意”難以“言傳”。別人的經(jīng)驗(yàn)不能代替自己的經(jīng)驗(yàn)。調(diào)試程序的能力是每個(gè)程序設(shè)計(jì)人員應(yīng)當(dāng)掌握的一項(xiàng)基本功。因此,在做實(shí)驗(yàn)時(shí)千萬(wàn)不要在程序通過(guò)后就認(rèn)為萬(wàn)事大吉、完成任務(wù)了,而應(yīng)當(dāng)在己通過(guò)的程序基礎(chǔ)上作一些改動(dòng)(例如修改一些參數(shù)、增加程序的一些功能、改變某些語(yǔ)句、改變輸入數(shù)據(jù)的方法等),再進(jìn)行編譯、連接和運(yùn)行。甚至于“自設(shè)障礙”,即把正確的程序改為有錯(cuò)的(

5、例如語(yǔ)句漏寫(xiě)分號(hào);用scanf函數(shù)輸入變量時(shí),漏寫(xiě)“&”符號(hào);比較符“= =”錯(cuò)寫(xiě)為賦值號(hào)“=”;使數(shù)組下標(biāo)出界;使整數(shù)溢出等),觀察和分析所出現(xiàn)的情況。這樣的學(xué)習(xí)才會(huì)有真正的收獲,是靈活主動(dòng)的學(xué)習(xí)而不是呆板被動(dòng)的學(xué)習(xí)。二、上機(jī)實(shí)驗(yàn)前的準(zhǔn)備工作在上機(jī)實(shí)驗(yàn)前應(yīng)事先做好準(zhǔn)備工作,以提高上機(jī)實(shí)驗(yàn)的效率,準(zhǔn)備工作至少應(yīng)包括:(1)了解所用的計(jì)算機(jī)系統(tǒng)(包括C編譯系統(tǒng)和工作平臺(tái))的性能和使用方法;(2)復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容;(3)準(zhǔn)備好上機(jī)所需的程序。由于計(jì)算機(jī)實(shí)驗(yàn)室給每個(gè)學(xué)生安排的時(shí)間是有限的,要珍惜時(shí)間,充分利用。應(yīng)當(dāng)在上機(jī)前按指定的題目編寫(xiě)好程序。手編程序應(yīng)書(shū)寫(xiě)整齊,并經(jīng)人工檢

6、查無(wú)誤后才能上機(jī),以提高上機(jī)效率。初學(xué)者切忌不編程序或抄別人程序去上機(jī),應(yīng)從一開(kāi)始就養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng);(4)對(duì)運(yùn)行中可能出現(xiàn)的問(wèn)題事先作出估計(jì),對(duì)程序中自己有疑問(wèn)的地方,應(yīng)作出記號(hào),以便在上機(jī)時(shí)給予注意;(5)準(zhǔn)備好調(diào)試和運(yùn)行時(shí)所需的數(shù)據(jù)。三、上機(jī)實(shí)驗(yàn)的步驟上機(jī)實(shí)驗(yàn)時(shí)一人一組,獨(dú)立上機(jī),復(fù)雜分組進(jìn)行,相互討論完成任務(wù)。上機(jī)過(guò)程中出現(xiàn)的問(wèn)題,除了是系統(tǒng)的問(wèn)題以外,一般應(yīng)自己獨(dú)立處理,不要輕易舉手問(wèn)教師。尤其對(duì)“出錯(cuò)信息”,應(yīng)善于自己分析判斷。這是學(xué)習(xí)調(diào)試程序的良好機(jī)會(huì)。上機(jī)實(shí)驗(yàn)一般應(yīng)包括以下幾個(gè)步驟:(1)進(jìn)入C工作環(huán)境(Dev-C+ 5.8.3)。(2)輸入自己所編好的程序。(3)檢查一遍已

7、輸入的程序是否有錯(cuò)(包括輸入時(shí)打錯(cuò)的和編程中的錯(cuò)誤),如發(fā)現(xiàn)有錯(cuò),及時(shí)改正。(4)進(jìn)行編譯和連接。如果在編譯和連接過(guò)程中發(fā)現(xiàn)錯(cuò)誤,屏幕上會(huì)出現(xiàn)“出錯(cuò)信息”,根據(jù)提示找到出錯(cuò)位置和原因,加以改正。再進(jìn)行編譯,如此反復(fù)直到順利通過(guò)編譯和連接為止。(5)運(yùn)行程序并分析運(yùn)行結(jié)果是否合理和正確。在運(yùn)行時(shí)要注意當(dāng)輸入不同數(shù)據(jù)時(shí)所得到的結(jié)果是否正確。(6)輸出程序清單和運(yùn)行結(jié)果。四、實(shí)驗(yàn)驗(yàn)收(1)現(xiàn)場(chǎng)驗(yàn)收,學(xué)生講解、提問(wèn)、答辯的方式,通過(guò)三方面的表現(xiàn)給出實(shí)驗(yàn)成績(jī);(2)提交程序清單(電子版)。第二部分 關(guān)于程序的調(diào)試和測(cè)試一、程序錯(cuò)誤的類(lèi)型為了幫助各位同學(xué)調(diào)試程序和分析程序,下面簡(jiǎn)單介紹程序出錯(cuò)的種類(lèi)。(1

8、)語(yǔ)法錯(cuò)誤即不符合C語(yǔ)言的語(yǔ)法規(guī)定,例如將main 錯(cuò)寫(xiě)為naim ,括號(hào)不匹配,語(yǔ)句最后漏了分號(hào)等,這些都會(huì)在編譯時(shí)被發(fā)現(xiàn)并指出。這些都屬于“致命錯(cuò)誤”, 不改正是不能通過(guò)編譯的。對(duì)一些在語(yǔ)法上有輕微毛病但不影響程序運(yùn)行的錯(cuò)誤(如定義了變量但始終未使用),編譯時(shí)會(huì)發(fā)出“警告”,雖然程序能通過(guò)編譯,但不應(yīng)當(dāng)使程序“帶病工作”,應(yīng)該將程序中所有導(dǎo)致“錯(cuò)誤(error)”和“警告(warning)”的因素都消除,再使程序投入運(yùn)行。(2)邏輯錯(cuò)誤這是指程序無(wú)語(yǔ)法錯(cuò)誤,也能正常運(yùn)行,但是結(jié)果不對(duì)。例如求s=l+2+3+100,有人寫(xiě)出以下語(yǔ)句:for(s=0, i=1; i<100; i+) s

9、=s + i;語(yǔ)法沒(méi)有錯(cuò),但求出的結(jié)果是l+2+3+99之和,而不是l+2+3+100之和,原因是少執(zhí)行了一次循環(huán)。這類(lèi)錯(cuò)誤可能是設(shè)計(jì)算法時(shí)的錯(cuò)誤,也可能是算法正確而在編寫(xiě)程序時(shí)出現(xiàn)疏忽所致。這種錯(cuò)誤計(jì)算機(jī)是無(wú)法檢查出來(lái)的。如果是算法有錯(cuò),則應(yīng)先修改算法,再改程序。如果是算法正確而程序?qū)懙貌粚?duì),則直接修改程序。(3)運(yùn)行錯(cuò)誤有時(shí)程序既無(wú)語(yǔ)法錯(cuò)誤,又無(wú)邏輯錯(cuò)誤,但程序不能正常運(yùn)行或結(jié)果不對(duì)。多數(shù)情況是數(shù)據(jù)不對(duì),包括數(shù)據(jù)木身不合適以及數(shù)據(jù)類(lèi)型不匹配。如有以下程序:void main ( ) int a, b, c ; scanf(“%d, %d”, &a, &b);c=a/b;pr

10、intf(“%dn”,c);當(dāng)輸入的b為非零值時(shí),運(yùn)行無(wú)問(wèn)題。當(dāng)輸入的b為零時(shí),運(yùn)行時(shí)出現(xiàn)“溢出(overflow)”的錯(cuò)誤。如果在執(zhí)行上面的scanf語(yǔ)句時(shí)輸入456.78 34.56,則輸出c的值為2,顯然是不對(duì)的。這是由一于輸入的數(shù)據(jù)類(lèi)型與輸入格式符%d不匹配而引起的。二、程序的測(cè)試程序調(diào)試的任務(wù)是排除程序中的錯(cuò)誤,使程序能順利地運(yùn)行并得到預(yù)期的效果。程序的調(diào)試階段不僅要發(fā)現(xiàn)和消除語(yǔ)法上的錯(cuò)誤,還要發(fā)現(xiàn)和消除邏輯錯(cuò)誤和運(yùn)行錯(cuò)誤。除了可以利用編譯時(shí)提示的“出錯(cuò)信息”來(lái)發(fā)現(xiàn)和改正語(yǔ)法錯(cuò)誤外,還可以通過(guò)程序的測(cè)試來(lái)發(fā)現(xiàn)邏輯錯(cuò)誤和運(yùn)行錯(cuò)誤。程序的測(cè)試的任務(wù)是盡力尋找程序中可能存在的錯(cuò)誤。在測(cè)試時(shí)

11、要設(shè)想到程序運(yùn)行時(shí)的各種情況,測(cè)試在各種情況下的運(yùn)行結(jié)果是否正確。程序測(cè)試是程序調(diào)試的一個(gè)組成部分。有時(shí)程序在某些情況下能正常運(yùn)行,而在另外一些情況下不能正常運(yùn)行或得不到正確的結(jié)果,因此,一個(gè)程序即使通過(guò)編譯并正常運(yùn)行而且結(jié)果正確,還不能認(rèn)為程序沒(méi)有問(wèn)題了。要考慮是否在任何情況下都能正常運(yùn)行并且得到正確的結(jié)果。測(cè)試的任務(wù)就是要找出那些不能正常運(yùn)行的情況和原因。下而通過(guò)一個(gè)典型的和容易理解的例子來(lái)說(shuō)明測(cè)試的概念。求一元二次方程ax2+bx+c=0的根。有人根據(jù)求根公式x1, 2=(-b±sqrt(b2-4ac)/2a編寫(xiě)出以下程序:# include <stdio.h>#

12、include<math.h>void main( ) float a, b, c, disc, x1, x2; scanf(“%f, %f, %f”, &a, &b, &c); disc=b*b-4*a*c; x1=(-b + sqrt(disc)/(2*a); x2=(-b - sqrt(disc)/(2*a); printf(”x1=%6.2f, x2=%6.2fn”, x1, x2);當(dāng)輸入a,b,c的值為1,-2,-15 時(shí),輸出xl 的值為5,x2的值為-3。結(jié)果是正確無(wú)誤的。但是若輸入a,b,c的值為3,2,4 時(shí),屏幕上出現(xiàn)了出錯(cuò)信息,程序停

13、止運(yùn)行,原因是此時(shí)b2-4ac小于0,出現(xiàn)了對(duì)負(fù)數(shù)求平方根的運(yùn)算,故出錯(cuò)。因此,此程序只適用b2-4ac0的情況。我們不能說(shuō)上面的程序是錯(cuò)的,而只能說(shuō)程序?qū)赡艹霈F(xiàn)的情況“考慮不周” ,所以不能保證在任何情況下都是正確的。使用這個(gè)程序必須滿(mǎn)足一定的前提(b2-4ac0),這樣,就給使用程序的人帶來(lái)不便。人們?cè)谳斎霐?shù)據(jù)前,必須先算一下,看b2-4ac是否大于或等于0。一個(gè)程序應(yīng)能適應(yīng)各種不同的情況,并且都能正常運(yùn)行并得到相應(yīng)的結(jié)果。下面分析一下求方程ax2+bx+c=0的根,有幾種情況:(1)a0時(shí) b2-4ac>0有兩個(gè)不等的實(shí)根:x1, 2=(-b±sqrt(b2-4ac)/

14、2a b2-4ac=0有兩個(gè)相等的實(shí)根:x1= x 2=-b/2a b2-4ac<0有兩個(gè)不等的共軛復(fù)根:x1, 2=(-b±sqrt(b2-4ac)i)/2a(2)a=0時(shí),方程就變成一元一次的線性方程:bx+c=0 當(dāng)b0時(shí),x =-c/b 當(dāng)b = 0時(shí),方程變?yōu)?x+c=0當(dāng)c = 0時(shí),x可以為任何值;當(dāng)c0時(shí),x無(wú)解。綜合起來(lái),共有6種情況: a0,b2-4ac>0 a0,b2-4ac=0 a0,b2-4ac<0 a=0,b0 a=0,b= 0,c = 0 a=0,b= 0,c0應(yīng)當(dāng)分別測(cè)試程序在以上6 種情況下的運(yùn)行情況,觀察它們是否符合要求。為此,應(yīng)

15、準(zhǔn)備6 組數(shù)據(jù)。用這6 組數(shù)據(jù)去測(cè)試程序的“健壯性”。在使用上面這個(gè)程序時(shí),顯然只有滿(mǎn)足情況的數(shù)據(jù)才能使程序正確運(yùn)行,而輸入滿(mǎn)足情況的數(shù)據(jù)時(shí),程序出錯(cuò)。這說(shuō)明程序不“健壯”。為此,應(yīng)當(dāng)修改程序,使之能適應(yīng)以上6 種情況??蓪⒊绦蚋臑椋?include<stdio.h>#include<math>void main( ) float a, b, c, disc, x1, x2, p, q; printf("input a, b, c: "); scanf(“%f, %f, %f”, &a, &b, &c); if(a= =0)

16、if(b= =0) if(c= =0) printf("It is trivial.n); else printf("It is impossible.n); else printf("It has one solution:n); pirntf("x=%6.2fn",-c/b); else disc= b*b-4*a*c; if(disc>=0) if(disc>0) printf("It has two real solutions:n"); x1=(-b+sqrt(disc)/(2*a); x2=(-b-s

17、qrt(disc)/(2*a); printf(”x1=%6.2f, x2=%6.2fn”, x1, x2); else printf("It has two same real solutions:n"); printf("x1=x2=%6.2fn",-b/(2*a); else pritnf("It has two complex solutions:n"); p=-b/(2*a); q=sqrt(-disc)/(2*a); printf("x1=%6.2f+%6.2fi, x2=%6.2f - %6.2fin"

18、;, p, q, p, q); 為了測(cè)試程序的“健壯性”,我們準(zhǔn)備了6組數(shù)據(jù): 3,4,1 1,2,1 4,2,1 0,3,4 0,0,0 0,0,5分別用這6組數(shù)據(jù)作為輸入的a,b,c的值,得到以下的運(yùn)行結(jié)果: input a, b, c: 3 4 1 It has two real solutions: x1=-0.33, x2= -1.00 input a, b, c: 1 2 1 It has two same real solutions: x1=x2= -1.00 input a, b, c: 4 2 1 It has two complex solutions: x1=-0.25

19、+0.43i, x2=-0.25-0.43i input a, b, c: 0 3 4 It has one solutions: x1=-1.33 input a, b, c: 0 0 0 It is trivial. input a, b, c: 0 0 5 It is impossible.經(jīng)過(guò)測(cè)試,可以看到程序?qū)θ魏屋斎氲臄?shù)據(jù)都能正常運(yùn)行并得到正確的結(jié)果。以上是根據(jù)數(shù)學(xué)知識(shí)知道輸入數(shù)據(jù)有6種方案。但在有些情況下,并沒(méi)有現(xiàn)成的數(shù)學(xué)公式作為依據(jù),例如一個(gè)商品管理程序,要求對(duì)各種不同的檢索作出相應(yīng)的反應(yīng)。如果程序包含多條路徑(如由if語(yǔ)句形成的分支),則應(yīng)當(dāng)設(shè)計(jì)多組測(cè)試數(shù)據(jù),使程序中每一條路

20、徑都有機(jī)會(huì)執(zhí)行,觀察其運(yùn)行是否正常。以上就是程序測(cè)試的初步知識(shí)。測(cè)試的關(guān)鍵是正確地準(zhǔn)備測(cè)試數(shù)據(jù)。如果只準(zhǔn)備4 組測(cè)試數(shù)據(jù),程序都能正常運(yùn)行,仍然不能認(rèn)為此程序己無(wú)問(wèn)題。只有將程序運(yùn)行時(shí)所有的可能情況都作過(guò)測(cè)試,才能作出判斷。測(cè)試的目的是檢查程序有無(wú)“漏洞”。對(duì)于一個(gè)簡(jiǎn)單的程序,要找出其運(yùn)行時(shí)全部可能執(zhí)行到的路徑,并正確地準(zhǔn)備數(shù)據(jù)并不困難。但是如果需要測(cè)試一個(gè)復(fù)雜的大程序,要找到全部可能的路徑并準(zhǔn)備出所需的測(cè)試數(shù)據(jù)并非易事。例如:有兩個(gè)非嵌套的if語(yǔ)句,每個(gè)if語(yǔ)句有兩個(gè)分支,它們所形成的路徑數(shù)目為2×24。如果一個(gè)程序包含100 個(gè)if語(yǔ)句,則可能的路徑數(shù)目為21001.267651

21、×1030,要測(cè)試每一條路徑兒乎是不可能的。實(shí)際上進(jìn)行測(cè)試的只是其中一部分(執(zhí)行幾率最高的部分)。因此,經(jīng)過(guò)測(cè)試的程序一般還不能輕易宣布為“沒(méi)有問(wèn)題”,只能說(shuō)“經(jīng)過(guò)測(cè)試的部分無(wú)問(wèn)題”。正如檢查身體一樣,經(jīng)過(guò)內(nèi)科、外科、眼科、五官科各科例行檢查后,不能宣布被檢查者“沒(méi)有任何病癥”,他有可能有隱蔽的、不易查出的病癥。所以醫(yī)院的診斷書(shū)一般寫(xiě)為“未發(fā)現(xiàn)異常”,而不能寫(xiě)“此人身體無(wú)任何問(wèn)題”。我們應(yīng)當(dāng)了解測(cè)試的目的,學(xué)會(huì)組織測(cè)試數(shù)據(jù),并根據(jù)測(cè)試的結(jié)果修改完善程序。第三部分 實(shí)驗(yàn)內(nèi)容與安排實(shí)驗(yàn)一 簡(jiǎn)單的C程序?qū)嶒?yàn)1實(shí)驗(yàn)?zāi)康模?)了解Dev-C+集成環(huán)境的窗口界面,熟練掌握如何編輯、編譯、連接、運(yùn)

22、行一個(gè)C程序以及如何保存和修改C語(yǔ)言的源程序。(2)通過(guò)運(yùn)行簡(jiǎn)單的C程序,初步了解C源程序的結(jié)構(gòu)和特點(diǎn)。(3)學(xué)會(huì)簡(jiǎn)單的讀程序和調(diào)試程序。2實(shí)驗(yàn)內(nèi)容(1)輸出圖形。(2)求下圖所示田徑場(chǎng)的周長(zhǎng)和面積。(3)已知圓的周長(zhǎng)與面積公式為: Cir=2*3.14*rad Area=3.14*rad*rad 從鍵盤(pán)輸入一個(gè)半徑值,求該圓的周長(zhǎng)和面積。要求:用主函數(shù)實(shí)現(xiàn)半徑的輸入,圓周長(zhǎng)和面積的輸出,周長(zhǎng)和面積用不同的函數(shù)來(lái)實(shí)現(xiàn)。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第1章、第3章實(shí)驗(yàn)二 順序程序設(shè)計(jì)1實(shí)驗(yàn)?zāi)康模?)掌握C語(yǔ)言中使用最多的一種語(yǔ)句賦值語(yǔ)句的使用方法。(2)掌握C語(yǔ)言數(shù)據(jù)類(lèi)型,熟悉如何定義一個(gè)整型、

23、字符型和實(shí)型的變量,以及對(duì)它們賦值的方法,了解字符型數(shù)據(jù)和整型數(shù)據(jù)的內(nèi)在關(guān)系。(3)掌握不同的類(lèi)型數(shù)據(jù)之間賦值的規(guī)律。(4)掌握對(duì)各種類(lèi)型數(shù)據(jù)的正確輸入方法。(5)學(xué)會(huì)使用C的有關(guān)算術(shù)運(yùn)算符,以及包含這此運(yùn)算符的表達(dá)式。(6)掌握各種類(lèi)型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。(7)進(jìn)一步掌握編寫(xiě)程序和調(diào)試程序的方法。2實(shí)驗(yàn)內(nèi)容和步驟(1)用下面的scanf函數(shù)輸入數(shù)據(jù),使a=3, b=7, x=8.5, y=71.82, c1=A, C2=a。 問(wèn)在鍵盤(pán)上如何輸入? #include <stdio.h> int main( ) int a, b; float x, y;

24、char c1, c2; scanf( “a=%db=%d”, &a, &b); scanf(“%f%f”, &x, &y); scanf(“%c%c”,&c1, &c2); return 0;(2)設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2為數(shù)字。請(qǐng)編程序。(3)求ax2+bx+c=0方程的根。a, b, c由鍵盤(pán)輸入,假設(shè)b2- 4ac>0。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第3章。實(shí)驗(yàn)三 選擇結(jié)構(gòu)程序設(shè)計(jì)1實(shí)驗(yàn)?zāi)康模?)了解C語(yǔ)

25、言表示邏輯量的方法(以0代表“假”,以非0代表“真”)。(2)學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式。(3)熟練掌握if 語(yǔ)句和switch 語(yǔ)句。(4)結(jié)合程序掌握一些簡(jiǎn)單的算法。(5)進(jìn)一步學(xué)習(xí)調(diào)試程序的方法。2實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)要求事先編好解決下面問(wèn)題的程序,然后上機(jī)輸入程序并調(diào)試運(yùn)行程序。(1)有3個(gè)整數(shù)a, b, c,由鍵盤(pán)輸入,輸出其中最大的數(shù)。(2)有一函數(shù): x (x1)y= 2x1 (1x10) 3x11 (x10) 寫(xiě)程序,用scanf函數(shù)輸入x的值,輸出y相應(yīng)的值。運(yùn)行程序輸入x 的值(分別為x1、110、x10這3種情況),檢查輸出的y 值是否正確。(3)給出一個(gè)百分

26、制成績(jī),要求輸出成績(jī)等級(jí)A、B、C、D、E。90分以上為A,8189 分為B,7079分為C,6069分為D,60分以下為E。 事先編好程序,要求分別用if語(yǔ)句和switch語(yǔ)句來(lái)實(shí)現(xiàn)。運(yùn)行程序,并檢查結(jié)果是否正確。 再運(yùn)行一次程序,輸入分?jǐn)?shù)為負(fù)值(如-70),這顯然是輸入時(shí)出錯(cuò),不應(yīng)給出等級(jí),修改程序,使之能正確處理任何數(shù)據(jù),當(dāng)輸入數(shù)據(jù)大于100和小于0時(shí),通知用戶(hù)“輸入數(shù)據(jù)錯(cuò)”,程序結(jié)束。(4)給一個(gè)不多于5 位的正整數(shù),要求: 求出它是幾位數(shù); 分別輸出每一位數(shù)字; 按逆序輸出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123。應(yīng)準(zhǔn)備以下測(cè)試數(shù)據(jù):· 要處理的數(shù)為1位正整數(shù);·

27、 要處理的數(shù)為2 位正整數(shù);· 要處理的數(shù)為3 位正整數(shù);· 要處理的數(shù)為4 位正整數(shù);· 要處理的數(shù)為5 位正整數(shù)。除此之外,程序還應(yīng)當(dāng)對(duì)不合法的輸入做必要的處理,例如:· 輸入負(fù)數(shù);· 輸入的數(shù)超過(guò)5位(如123456 )。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第4章。實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(一)1實(shí)驗(yàn)?zāi)康模?)熟悉掌握用while語(yǔ)句、do-while語(yǔ)句實(shí)現(xiàn)循環(huán)的方法。(2)掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)一些常用算法。(3)進(jìn)一步學(xué)習(xí)調(diào)試程序。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1)輸入兩個(gè)正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)。在運(yùn)行

28、時(shí),輸入的值m>n,觀察結(jié)果是否正確。再輸入時(shí),使m<n,觀察結(jié)果是否正確。修改程序,不論m和n為何值(包括負(fù)整數(shù)),都能得到正確結(jié)果。(2)分別求出1100的和、150的平方和、110的倒數(shù)和,并計(jì)算三者之和。(3)輸出所有的“水仙花數(shù)”,所謂的“水仙花數(shù)”是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如153是一個(gè)“水仙花數(shù)”,因?yàn)?53=13+53+33。(4)編程序找出1000之內(nèi)的所有完數(shù),并輸出。所謂完數(shù),是指一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為“完數(shù)”。例如,6的因子為1,2,3,而6=1+2+3,因此6是完數(shù)。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第5章實(shí)驗(yàn)五 循

29、環(huán)結(jié)構(gòu)程序設(shè)計(jì)(二)1實(shí)驗(yàn)?zāi)康模?)熟悉掌握用for語(yǔ)句實(shí)現(xiàn)循環(huán)的方法。(2)掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)一些常用算法。(3)進(jìn)一步學(xué)習(xí)調(diào)試程序。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1) 有一個(gè)分?jǐn)?shù)序列: 2/1,3/2,5/3,5/8,13/8,21/13, 求出這個(gè)數(shù)列的前20項(xiàng)之和。 (2) 一個(gè)球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反彈。求它在第10次落地時(shí),共經(jīng)過(guò)多少米,第10次反彈多高。(3)輸出以下圖案: * * * * * *3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第5章實(shí)驗(yàn)六 數(shù) 組(一)1實(shí)驗(yàn)?zāi)康模?)掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法。

30、(2)掌握與數(shù)組有關(guān)的算法(特別是排序算法)。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1)已有一個(gè)已排好序的數(shù)組,要求輸入一個(gè)數(shù)后,按原來(lái)排序的規(guī)律將它插入到數(shù)組中。(2)將一個(gè)數(shù)組中的值按逆序重新存放。例如,原來(lái)順序?yàn)?, 6, 5, 4, 1,要求改為1, 4, 5, 6, 8。(3)輸出以下的楊輝三角形(要求輸出10行)。11112113311464115101051(4)輸出“魔方陣”。所謂魔方陣是指這樣的方陣,它的每一行、每一列和對(duì)角線之和均相等。例如,三階魔方陣為(此題選做) 81 6 35 7 49 23預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第6章。實(shí)驗(yàn)七 數(shù) 組(二)1實(shí)驗(yàn)?zāi)康模?)掌握字符數(shù)

31、組和字符串函數(shù)的使用。(2)掌握與字符數(shù)組有關(guān)的算法。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1)找出一個(gè)二維數(shù)組中的鞍點(diǎn),即該位置上的元素在該行上最大、在該列上最小。也可能沒(méi)有鞍點(diǎn)。(此題選做)(2)編一個(gè)程序,將兩個(gè)字符串s1和s2比較,若s1>s2,輸出一個(gè)正數(shù);若s1=s2,輸出0;若s1<s2,輸出一個(gè)負(fù)數(shù)。不要使用strcmp函數(shù)。(3)編寫(xiě)一個(gè)程序,將字符數(shù)組s2中的全部字符復(fù)制到字符數(shù)組1中。不用strcpy函數(shù)。復(fù)制時(shí),0也要復(fù)制過(guò)去,0后面的字符不復(fù)制。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第6章。實(shí)驗(yàn)八 函 數(shù)(一)1實(shí)驗(yàn)?zāi)康模?)掌握定義函數(shù)的方法。(2)掌握函數(shù)實(shí)參與形

32、參的對(duì)應(yīng)關(guān)系,以及“值傳遞”的方式。(3)掌握函數(shù)的調(diào)用方法和過(guò)程。(4)掌握函數(shù)的遞歸調(diào)用2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1)寫(xiě)兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果。兩個(gè)整數(shù)由鍵盤(pán)輸入。(2)寫(xiě)一個(gè)函數(shù),使給定的一個(gè)3×3的二維數(shù)組轉(zhuǎn)置,即行列互換。(3)用遞歸方法求n階勒讓德多項(xiàng)式的值,遞歸公式如下:1 (n=0)Pn(x)= x(n=1) (2n-1)*x-pn-1(x)-(n-1)*pn-2(x)/n (n>=1)3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第7章。實(shí)驗(yàn)九 函 數(shù)(二)1實(shí)驗(yàn)?zāi)康模?)掌握函數(shù)的嵌套調(diào)用和數(shù)組作為函數(shù)參

33、數(shù)的方法。(2)掌握全局變量和局部變量、動(dòng)態(tài)變量、靜態(tài)變量的概念和使用方法。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。(1)輸入10個(gè)學(xué)生5門(mén)課的成績(jī),分別用函數(shù)實(shí)現(xiàn)下列功能: 計(jì)算每個(gè)學(xué)生平均分。 計(jì)算每門(mén)課的平均分。 找出所有50個(gè)分?jǐn)?shù)中最高的分?jǐn)?shù)所對(duì)應(yīng)的學(xué)生和課程。 計(jì)算平均分方差。(2)給出年、月、日,計(jì)算該日是該年的第幾天。3預(yù)習(xí)內(nèi)容C程序設(shè)計(jì)(第四版)第7章。實(shí)驗(yàn)十 指 針1實(shí)驗(yàn)?zāi)康模?)通過(guò)實(shí)驗(yàn)進(jìn)一步掌握指針的概念,會(huì)定義和使用指針變量。(2)能正確使用數(shù)組的指針和指向數(shù)組的指針變量。(3)能正確使用字符串的指針和指向字符串的指針變量。(4)了解指向指針的指針的概念及其使用方法。2實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行程序(都要求用指針處理)。(1)輸入3個(gè)整數(shù),按由小到大的順序輸出。(2)輸入10個(gè)整數(shù),將其中

溫馨提示

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

評(píng)論

0/150

提交評(píng)論