




已閱讀5頁(yè),還剩25頁(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)介
.C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書 桂林電子科技大學(xué)信息科技學(xué)院2017.03前言 上機(jī)實(shí)驗(yàn)的目的和要求一 上機(jī)實(shí)驗(yàn)的目的上機(jī)實(shí)驗(yàn)的目的,絕不僅僅是為了驗(yàn)證教材和講課的內(nèi)容,或者驗(yàn)證自己所編程序正確與否。學(xué)習(xí)程序語(yǔ)言,上機(jī)實(shí)驗(yàn)的目的如下:1 加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定,光靠課堂講授,既枯燥無(wú)味又難以記住,通過(guò)多次上機(jī),就能自然、熟練地掌握語(yǔ)法規(guī)定。2 了解和熟悉C語(yǔ)言程序開發(fā)環(huán)境。熟悉一兩種環(huán)境(計(jì)算機(jī)系統(tǒng)的軟件和硬件條件),再遇到其他的系統(tǒng)時(shí)便會(huì)觸類旁通,很快學(xué)會(huì)。3 學(xué)會(huì)上機(jī)調(diào)試程序,也就是善于發(fā)現(xiàn)程序中的錯(cuò)誤,并且能很快地排除這些錯(cuò)誤,使程序能夠正確地運(yùn)行。要真正掌握計(jì)算機(jī)應(yīng)用技術(shù),就不僅應(yīng)當(dāng)了解和熟悉有關(guān)理論和方法,而且要求自己動(dòng)手實(shí)踐能力強(qiáng)。4 在做實(shí)驗(yàn)時(shí)千萬(wàn)不要在程序通過(guò)后就認(rèn)為萬(wàn)事大吉,完成任務(wù)了,應(yīng)當(dāng)在通過(guò)的程序上做一些調(diào)試和修改,看看會(huì)得到什么結(jié)果。多動(dòng)腦筋思考,將會(huì)對(duì)你有很大幫助。二 上機(jī)實(shí)驗(yàn)前的準(zhǔn)備工作1 了解所用的計(jì)算機(jī)系統(tǒng)的性能和使用方法;2 復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容;3 準(zhǔn)備好上機(jī)所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;4 準(zhǔn)備好調(diào)試和運(yùn)行時(shí)所需的數(shù)據(jù)。三 上機(jī)實(shí)驗(yàn)的步驟1 調(diào)出C語(yǔ)言編譯系統(tǒng),進(jìn)入C語(yǔ)言工作環(huán)境;2 輸入自己編制好的程序;3 檢查輸入是否有錯(cuò),及時(shí)更正;4 進(jìn)行編譯和連接;5 運(yùn)行程序,分析結(jié)果。四、實(shí)驗(yàn)結(jié)束,整理實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告應(yīng)包括以下內(nèi)容:1 上機(jī)題目;2 程序清單;3 運(yùn)行結(jié)果;4 對(duì)結(jié)果的分析和本次獲得的經(jīng)驗(yàn)和體會(huì)。實(shí)驗(yàn)一 C語(yǔ)言程序初步數(shù)據(jù)類型、運(yùn)算符和表達(dá)式一 實(shí)驗(yàn)?zāi)康? 熟悉C語(yǔ)言運(yùn)行環(huán)境Microsoft Visual C+ 6.0中文版。2 掌握語(yǔ)言程序的書寫格式和語(yǔ)言程序的結(jié)構(gòu),初步了解C源程序的特點(diǎn)。3 掌握C語(yǔ)言上機(jī)步驟,了解如何編輯、編譯、調(diào)試和運(yùn)行一個(gè)C程序的方法。4 掌握C語(yǔ)言數(shù)據(jù)類型,熟悉如何定義一個(gè)整型、字符型和實(shí)型的變量,以及對(duì)他們賦值的方法。5 掌握不同的類型數(shù)據(jù)之間賦值的規(guī)律。二 實(shí)驗(yàn)內(nèi)容1 C語(yǔ)言上機(jī)步驟 開機(jī),啟動(dòng)Microsoft Visual C+ 6。 建立工程文件:在“文件”菜單中選擇“新建”命令項(xiàng),在彈出的“新建”對(duì)話框的“工程”選項(xiàng)卡中選擇“Win32 Console Application”選項(xiàng),在“工程”框中輸入工程文件名sy1,在“c:位置”下拉框中輸入或選擇文件夾,單擊“確定”;在以下彈出的兩個(gè)對(duì)話框中分別單擊命令按鈕“完成”和“確定”。 建立C+源文件:在“工程”菜單中選擇“添加到工程”“新建”命令項(xiàng),在彈出的“新建”對(duì)話框的“文件”選項(xiàng)卡中選擇“C+ Source File”,在右邊的“文件”框中輸入文件名sy11后單擊“確定”。 輸入源程序:在彈出的文件編輯窗口中輸入下面的源程序:#include void main() printf(Hello,World!n); printf(Welcome to the C language world!n); printf(Everyone has been waiting for.n); 編譯:用“編譯”菜單的“編譯”命令項(xiàng)對(duì)源文件sy11.cpp進(jìn)行編譯,如果程序有語(yǔ)法或語(yǔ)義錯(cuò)誤,在屏幕下面的窗口會(huì)出現(xiàn)錯(cuò)誤信息;這時(shí)候要修改源程序、保存后重新編譯。直到修改了全部錯(cuò)誤,屏幕下面的窗口會(huì)出現(xiàn)下面的信息:表示已通過(guò)編譯,生成了目標(biāo)程序sy11.obj。 調(diào)試:接下來(lái)進(jìn)行調(diào)試,操作如下圖所示。完成調(diào)試后,生成可執(zhí)行程序文件sy1.exe。 運(yùn)行:最后用“編譯”菜單的“!執(zhí)行sy1.exe”命令項(xiàng)運(yùn)行可執(zhí)行程序文件sy1.exe。運(yùn)行結(jié)果如下:2 用同樣的方法,完成下面程序的運(yùn)行1 輸入并運(yùn)行下面的程序,運(yùn)行后記錄并分析結(jié)果。#include main() char c1,c2; /* 第2行 */ c1=97;c2=98; /* 第3行 */ printf (%c %cn,c1,c2);在此基礎(chǔ)上: 在程序最后增加一個(gè)語(yǔ)句,再運(yùn)行,并分析結(jié)果。printf (%d %dn, c1, c2); 將第2行改為:int c1,c2;再次運(yùn)行,并分析結(jié)果。 再將第3行改為:c1=305;c2=340;再使之運(yùn)行,分析運(yùn)行結(jié)果。2 輸入并運(yùn)行下面的程序#include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1, c2, c3); printf(ttb%c%cn, c4, c5);在上機(jī)前先用人工分析程序,寫出應(yīng)得結(jié)果,上機(jī)后將二者對(duì)照。三 分析與討論1 下在調(diào)試過(guò)程中所發(fā)現(xiàn)的錯(cuò)誤、系統(tǒng)給出的出錯(cuò)信息和對(duì)策。分析討論成功或失敗的原因。2 總結(jié)程序的結(jié)構(gòu)和書寫規(guī)則。四 思考題1 請(qǐng)寫出C語(yǔ)言程序的構(gòu)成和運(yùn)行C語(yǔ)言程序的一般步驟。2 編寫一個(gè)C語(yǔ)言程序,輸入a、b、c三個(gè)數(shù),輸出其中最大者。試想,如果求四個(gè)數(shù)中的最大者,則程序該如何編寫。五 注意事項(xiàng)1 當(dāng)程序在編譯時(shí)發(fā)現(xiàn)很多錯(cuò)誤,此時(shí)應(yīng)從上到下逐一改正,或改一個(gè)錯(cuò)誤,就重新再編譯,因?yàn)橛袝r(shí)一個(gè)錯(cuò)誤會(huì)引起很多錯(cuò)誤信息。2 當(dāng)需要用比較復(fù)雜的邏輯表達(dá)式時(shí),要避免發(fā)生優(yōu)先級(jí)上的錯(cuò)誤,可以使用最高優(yōu)先級(jí)的運(yùn)算符()將其括起來(lái),這樣既增加可讀性,又不會(huì)出現(xiàn)不必要的錯(cuò)誤。實(shí)驗(yàn)二 順序結(jié)構(gòu)與輸入/輸出方法一 實(shí)驗(yàn)?zāi)康? 學(xué)會(huì)使用C的有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式,特別是自加(+)和自減(-)運(yùn)算符的使用。2 掌握C語(yǔ)言中賦值語(yǔ)句的使用。3 掌握C語(yǔ)言中各種數(shù)據(jù)的輸入/輸出方法,能正確使用各種格式轉(zhuǎn)換符。4 理解C語(yǔ)言程序的順序結(jié)構(gòu)。二 實(shí)驗(yàn)內(nèi)容上機(jī)調(diào)通以下程序。1 輸入下面的程序#include main() int i,j,m,n; i=8;j=10; m=+i; /* 第5行 */ n=j+; /* 第6行 */ printf(%d,%d,%d,%dn,i,j,m,n);運(yùn)行程序,注意i、j、m、n各變量的值;然后分別作以下改動(dòng)并運(yùn)行: 將第5、6行改為如下以后再運(yùn)行:m=i+;n=+j; 將程序改為:#include main() int i,j; i=8;j=10; printf(%d,%dn,i+,j+); /* 第5行 */ 在的基礎(chǔ)上,將第5行printf語(yǔ)句改為:printf(%d,%dn,+i,+j); 再將printf語(yǔ)句改為:printf(%d,%d,%d,%dn,i,j,i+,j+); 將程序改為:#include main() int i,j,m=0,n=0; i=8;j=10; m+=i+;n-=- -j; printf(i=%d,j=%d,m=%d,n=%dn,i,j,m,n);2 運(yùn)行以下程序,并分析其輸出結(jié)果#include main() short i; i=-2; printf(n i:dec=%d,oct=%o,hex=%x,unsigned=%un,i,i,i,i);【注意】在VC+ 6.0中,short和int類型的數(shù)據(jù)在內(nèi)存中占用4個(gè)字節(jié)。3 按格式要求輸入、輸出數(shù)據(jù)。#include main() int a,b; float x,y; char c1,c2; scanf(a=%d,b=%d,&a,&b); scanf(%f,%e,&x,&y); scanf(%c%c%c,&c1,&c1,&c2); /* 第8行 */ printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2);運(yùn)行該程序,按如下方式在鍵盤上輸入數(shù)據(jù):a=3,b=785,71.82aA請(qǐng)同學(xué)們寫出輸出的結(jié)果?!舅伎肌砍绦虻?行中,為什么變量c1要輸入兩次?4 運(yùn)行以下程序,并分析其輸出結(jié)果#include main() float f; f=3.1415; printf(n %f,%4.3f,%5.3f,%-10.3f,%10.3fn,f,f,f,f,f);4 運(yùn)行以下程序,并分析其輸出結(jié)果#include main() int a,b; float c,d; char c1,c2; a=61;b=62;c=31.5;d=-68.87;c1=a;c2=A; printf(n); printf(a=%d,b=%dn,a,b); printf(c=%f,d=%fn,c,d); printf(c=%e,d=%en,c,d); printf(c1=%c,%cn,c1,c2);【注意】在VC+ 6.0中,實(shí)數(shù)的指數(shù)形式是:X.XXXXXXeXXX5 以下程序的功能是從鍵盤輸入一個(gè)整型數(shù),一個(gè)實(shí)型數(shù)和一個(gè)字符型數(shù),并把他們?cè)谄聊簧陷敵?。完成以下填空,并把程序調(diào)通,寫出當(dāng)輸入為45,34.5,A時(shí)程序的運(yùn)行結(jié)果。#include main() int a; float b; char c; scanf(%d,%f,%c, ); printf(a= n,a); printf(b= n,b); printf(c= n,c);6 指出以下程序的錯(cuò)誤并改正,并上機(jī)把程序調(diào)通。#include main() int a; scanf(%f,a); printf(a=%f, a); char c; c=A; printf(%f,c)三 思考題1 編寫程序,用getchar函數(shù)讀入兩個(gè)字符c1,c2,然后分別用putchar函數(shù)和printf函數(shù)輸出這兩個(gè)字符。并思考以下問(wèn)題: 變量c1,c2應(yīng)定義為字符型或整型?還是二者皆可? 要求輸出c1和c2的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)? 整型變量和字符型變量是否在任何情況下都可以互相代替?2 設(shè)圓半徑r=2,圓柱高h(yuǎn)=3,求圓周長(zhǎng),圓柱底面積,圓柱體積。用scanf輸入數(shù)據(jù),用printf輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后兩位數(shù)字。實(shí)驗(yàn)三 邏輯運(yùn)算和選擇結(jié)構(gòu)程序設(shè)計(jì)一 實(shí)驗(yàn)?zāi)康? 掌握C語(yǔ)言表示邏輯量的方法(0代表“假”,1代表“真”);2 學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式;3 熟練掌握if語(yǔ)句和switch語(yǔ)句。二 實(shí)驗(yàn)內(nèi)容 1 已知三個(gè)數(shù)a,b,c,找出最大值放在max中。#include main() int a,b,c,max; printf(請(qǐng)輸入3個(gè)整數(shù)(中間用逗號(hào)分開):); scanf(%d,%d,%d,&a,&b,&c); if(a=b) max=a; else max=b; if(cmax) max=c; printf(max=%dn,max);若輸入下列數(shù)據(jù),分析程序的執(zhí)行順序并寫出輸出結(jié)果。序號(hào)輸入的3個(gè)整數(shù)a、b、c輸出max11,2,321,3,232,1,342,3,153,1,263,2,12 輸入某學(xué)生的成績(jī),經(jīng)處理后給出學(xué)生的等級(jí),等級(jí)如下:90分以上(包括90):A 8090分(包括80):B7080分(包括70):C 6070分(包括60):D60分以下:E方法一:用嵌套的if語(yǔ)句#include stdio.hmain() int score; char grade; printf(請(qǐng)輸入學(xué)生成績(jī):); scanf(%d,&score); if(score100|score=90) grade=A;else if(score=80) grade=B; else if(score=70) grade=C;else if(score=60) grade=D; else grade=E;printf(n成績(jī)等級(jí)是%cn,grade); 輸入測(cè)試數(shù)據(jù),調(diào)試程序。測(cè)試數(shù)據(jù)要覆蓋所有路徑,注意臨界值,例如此題中100分,60分,0分以及小于0和大于100的數(shù)據(jù)。如果稍不注意就會(huì)出現(xiàn)小的程序缺陷。方法二:用switch語(yǔ)句分析:switch語(yǔ)句是用于處理多分支的語(yǔ)句。注意,case后的表達(dá)式必須是一個(gè)常量表達(dá)式,所以在用switch語(yǔ)句之前,必須把0100之間的成績(jī)分別化成相關(guān)的常量。所有A(除100以外)、B、C、D類的成績(jī)的共同特點(diǎn)是十位數(shù)相同,此外都是E類。則由此可把score除十取整,化為相應(yīng)的常數(shù)。請(qǐng)同學(xué)們自己根據(jù)分析寫出完整的程序段,并編譯、運(yùn)行、查看結(jié)果。三 思考題1 有一函數(shù):x (-5x0)y = x-1 (x=0)x+1 (0x10)要求輸入x的值,輸出y的值。分別用: 不用嵌套的if語(yǔ)句; 用嵌套的if語(yǔ)句; 用switch語(yǔ)句編寫程序。2 從鍵盤上輸入三個(gè)實(shí)數(shù),它們分別代表三條線段的長(zhǎng)度,請(qǐng)寫一個(gè)判斷這三條線段所組成的三角形屬于什么類型(不等邊,等腰,等邊或不構(gòu)成三角形)的C程序;如果能構(gòu)成三角形,求出三角形的面積(取小數(shù)2位)。用下面的數(shù)據(jù)運(yùn)行程序,記錄程序的輸出結(jié)果:abc類型三角形面積1.582.371.562.482.482.482.359.283.83【提示】已知三角形邊長(zhǎng)a、b、c,計(jì)算三角形面積s的公式是:四 注意事項(xiàng):1 if-else語(yǔ)句書寫時(shí)應(yīng)采用分層縮進(jìn)的格式。2 switch語(yǔ)句的句法格式。實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一 目的和要求1 掌握在設(shè)計(jì)條件型循環(huán)結(jié)構(gòu)時(shí),如何正確地設(shè)定循環(huán)條件,以及如何正確地控制計(jì)數(shù)型循環(huán)結(jié)構(gòu)的次數(shù)。2 熟悉用while語(yǔ)句,do-while語(yǔ)句和for語(yǔ)句實(shí)現(xiàn)循環(huán)的方法。3 掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、選代、遞推等)。4 掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。二 實(shí)驗(yàn)內(nèi)容1 有一數(shù)列:2/1,3/2,5/3,8/5,求出這個(gè)數(shù)列的前10項(xiàng)之和。#include main() int n,t; float a=2,b=1,s=0; for(n=1;n=10;n+) s=s+a/b;t=a;a=a+b;b=t; printf(%fn,s);要求:跟蹤執(zhí)行,觀察s、t、a、b的變化。方法:使用功能鍵F10單步跟蹤執(zhí)行程序,可以在監(jiān)視窗口設(shè)置要觀察的變量或表達(dá)式。停止調(diào)試運(yùn)行的程序單步運(yùn)行此處監(jiān)視窗口2 程序修改題#include #include float fun ( float num ) int s ; float n, t, pi ; t = 1 ; pi = 0 ; n = 1 ; s = 1 ;/*found*/ while(t = num) pi = pi + t ; n = n + 2 ; s = -s ;/*found*/ t = s % n ; pi = pi * 4 ; return pi ;main( ) float n1, n2 ; printf(Enter a float number: ) ; scanf(%f, &n1) ; n2 = fun(n1) ; printf(%6.4fn, n2) ;3 計(jì)算兩個(gè)數(shù)的最大公約數(shù)。算法: 輸入兩個(gè)整數(shù)m、n,并求m除以n的余數(shù)k。 當(dāng)k0,將除數(shù)n作為被除數(shù)m,余數(shù)k作為除數(shù)n,繼續(xù)求m除以n的余數(shù)k;反復(fù)做第步,直到余數(shù)為0結(jié)束循環(huán)。 結(jié)束循環(huán)后,除數(shù)n就是m與n的最大公約數(shù)。請(qǐng)同學(xué)們根據(jù)算法寫出完整的程序,并編譯、運(yùn)行、檢查結(jié)果的正確性。三 思考題編寫程序:輸入6名學(xué)生5門課程的成績(jī),分別統(tǒng)計(jì)出每個(gè)學(xué)生5門課程的平均成績(jī)。四、注意事項(xiàng)1 while語(yǔ)句的句法格式及用法。2 for語(yǔ)句的正確使用方法。注意它的初始值、終止條件及步長(zhǎng)的確定。3 當(dāng)循環(huán)不能停止(出現(xiàn)死循環(huán)),應(yīng)該用Ctrl+break中斷程序的運(yùn)行。實(shí)驗(yàn)五 數(shù)組一 實(shí)驗(yàn)?zāi)康? 掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2 掌握字符數(shù)組和字符串函數(shù)的使用;3 掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實(shí)驗(yàn)內(nèi)容編程序并上機(jī)調(diào)試運(yùn)行。1、程序填空#include void fun(int a, int n) int i,t;/*found*/ for (i=0; i_1_; i+) t=ai;/*found*/ ai = an-1-_2_;/*found*/ _3_ = t; main() int b9=1,2,3,4,5,6,7,8,9, i; printf(nThe original data :n); for (i=0; i9; i+) printf(%4d , bi); printf(n); fun(b, 9); printf(nThe data after invert :n); for (i=0; i9; i+) printf(%4d , bi); printf(n);2、程序填空題#include #define N 3#define M 4/*found*/void fun(int (*a)N, int _1_) int i,temp ;/*found*/ for(i = 0 ; i _2_ ; i+) temp=a0i ;/*found*/ a0i = _3_ ; aki = temp ; main() int xMN= 1,2,3,4,5,6,7,8,9,10,11,12 ,i,j; printf(The array before moving:nn); for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn); fun(x,2); printf(The array after moving:nn); for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn); 3、程序修改題#include int fun(double x, int n) /*found*/ int j, c=0, double xa=0.0; for (j=0; jn; j+ ) xa += xj/n; printf(ave =%fn,xa); for (j=0; j xa) c+; return c;main ( ) double x100 = 193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763; printf(%dn, fun (x, 8);4 按照下面算法編一個(gè)程序,將兩個(gè)字符串連接起來(lái),不能用strcat函數(shù)。 定義整型變量i、j,字符串s1、s2 輸入字符串s1、s2 當(dāng)字符串s1尚未結(jié)束,改變字符串s1的下標(biāo),使之到s1結(jié)束處 當(dāng)字符串s2尚未結(jié)束,將字符串s2逐個(gè)字符連接到字符串s1的后面 為字符串s1添加結(jié)束標(biāo)志 輸出連接后的字符串三 思考題1 將一個(gè)數(shù)組中的值按逆序重新存放,例如,原來(lái)順序?yàn)?,6,5,4,1,要求改為1,4,5,6,8。2 最常用的排序方法除了冒泡排序外,還有選擇排序。程序設(shè)計(jì)思路:設(shè)有10個(gè)元素a0a9,將a0與a1a9比較,若a0比a1a9都小,則不進(jìn)行交換,即無(wú)任何操作。若a1a9中有一個(gè)以上比a0小,則將其中最小的一個(gè)(假設(shè)為ai)與a0交換,此時(shí)a0中存放了10個(gè)中最小的數(shù)。第二遍將a1與a2a9比較,將剩下9個(gè)數(shù)中的最小者ai與a1對(duì)換,此時(shí)a1中存放的是10個(gè)中第2小的數(shù)。依此類推,共進(jìn)行9遍比較,a0到a9就已按由小到大順序存放。n個(gè)數(shù)的選擇排序的N-S圖如下:真假定義變量、輸入n及數(shù)組a各元素for(i=0;in-1;i+)k=ifor(j=i+1;jn;j+)ajakk=j交換ak與ai輸出已排序的n個(gè)數(shù)用冒泡排序同樣的主函數(shù),請(qǐng)根據(jù)上面的N-S圖編寫選擇排序函數(shù)。四、注意事項(xiàng)1 在C語(yǔ)言中,數(shù)組元素的下標(biāo)從0開始,最大下標(biāo)總是比定義的數(shù)組長(zhǎng)度少1。2 在C語(yǔ)言中,定義數(shù)組時(shí),其長(zhǎng)度必須指定且必須用常量表示。實(shí)驗(yàn)六 函數(shù)一 實(shí)驗(yàn)?zāi)康? 掌握定義函數(shù)的方法;2 掌握函數(shù)實(shí)參與形參的對(duì)應(yīng)關(guān)系以及“值傳遞”的方式;3 掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法;4 掌握全局變量和局部變量動(dòng)態(tài)變量、靜態(tài)變量的概念和使用方法。二 實(shí)驗(yàn)內(nèi)容1 程序填空題#include double f1(double x) return x*x; double f2(double x, double y) return x*y; /*found*/_1_ fun(int i, double x, double y) if (i=1)/*found*/ return _2_(x); else/*found*/ return _3_(x, y);main() double x1=5, x2=3, r; r = fun(1, x1, x2); r += fun(2, x1, x2); printf(nx1=%f, x2=%f, x1*x1+x1*x2=%fnn,x1, x2, r);2 上機(jī)調(diào)試下面的程序,記錄系統(tǒng)給出的出錯(cuò)信息,并指出錯(cuò)誤原因。main() int x,y; printf(%dn,sum(x+y); int sum(a,b); int a,b;return(a+b); 3 程序填空題#include /*found*/_1_ fun(char ch)/*found*/ if (ch=0 & _2_)/*found*/ return 9- (ch-_3_); return ch ;main() char c1, c2; printf(nThe result :n); c1=2; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2); c1=8; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2); c1=a; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2);4 程序填空題#include int fun(char s) int i, n; n=0;/*found*/ for(i=0; _1_ !=0; i+)/*found*/ if(si=0&si= _2_ ) n+;/*found*/ _3_ ;main() char s80=abcdef35adgh3kjsdf7; int t; printf(nThe original string is : %sn,s); t=fun(s); printf(nThe result is : %dn,t);三 注意事項(xiàng)1 參數(shù)是一個(gè)函數(shù)與外界的接口,其有無(wú)、多少,取決于在實(shí)現(xiàn)該函數(shù)功能時(shí)是否需要已知數(shù)據(jù),以及需要多少,它的所需,即為參數(shù)。2 注意函數(shù)調(diào)用返回的特點(diǎn):返回調(diào)用處,而后繼續(xù)執(zhí)行下面的語(yǔ)句。3 函數(shù)中無(wú)return語(yǔ)句時(shí),函數(shù)的類型定義為void或int,不可定義為其他。4 當(dāng)被調(diào)函數(shù)定義在主調(diào)函數(shù)之后時(shí),應(yīng)在主調(diào)函數(shù)中說(shuō)明被調(diào)函數(shù),否則,調(diào)用時(shí)將出現(xiàn)錯(cuò)誤。5 當(dāng)一個(gè)程序由2個(gè)或2個(gè)以上的源程序文件組成時(shí),必須將這些源程序文件組織在一個(gè)工程項(xiàng)目文件中。在編譯時(shí),系統(tǒng)會(huì)分別對(duì)項(xiàng)目文件中的每個(gè)文件進(jìn)行編譯,然后將所得到的目標(biāo)文件連接成一個(gè)整體,再與系統(tǒng)的有關(guān)資源連接,生成一個(gè)可執(zhí)行文件,最后執(zhí)行這個(gè)文件。實(shí)驗(yàn)七 指針一 實(shí)驗(yàn)?zāi)康? 了解指針的概念,學(xué)會(huì)定義和使用指針變量。2 掌握指針、變量和數(shù)組的關(guān)系及使用方法。3 學(xué)會(huì)使用指向函數(shù)的指針變量。二 實(shí)驗(yàn)內(nèi)容1 運(yùn)行下列程序,寫出運(yùn)行結(jié)果。#include stdio.hmain() int a5,*p,j; for(j=0;j5;j+) aj=j+1; p=a; for(j=0;j5;j+) printf(*(p+%d)=%dn,j,*(p+j);將輸出語(yǔ)句中的*改成方括號(hào)的形式,修改后再運(yùn)行程序。2 程序修改題#include int fun(int *x,int y) int t ;/*found*/ t = x ; x = y ;/*found*/ return(y) ;main() int a = 3, b = 8 ; printf(%d %dn, a, b) ; b = fun(&a, b) ; printf(%d %dn, a, b) ;3 程序修改題#include #define N 20int fun ( float *s, int n, float *aver ) float ave, t = 0.0 ; int count = 0, k, i ; for ( k = 0 ; k n ; k+ )/*found*/ t = sk ; ave = t / n ; for ( i = 0 ; i n ; i+ ) if ( s i ave ) count+ ;/*found*/ *aver = Ave ; return count ;main() float s30, aver ; int m, i ; printf ( nPlease enter m: ) ; scanf (%d, &m ) ; printf ( nPlease enter %d mark :n , m ) ; for( i = 0 ; i m ; i+ ) scanf ( %f, s + i ) ; printf( nThe number of students : %d n , fun ( s, m, &aver ) ); printf( Ave = %fn, aver ) ;4 程序填空題#include int fun(char *s, char *t) int n=0; while(*s) if(*s 97) /*found*/ *(t+n)= _1_ ; n+; /*found*/ _2_ ; *(t+n)=0;/*found*/ return _3_ ;main() char s81,t81; int n; printf(nEnter a string:n); gets(s); n=fun(s,t); printf(nThere are %d letter which ASCII code is less than 97: %sn,n,t);三 思考題1 下面的程序用來(lái)實(shí)現(xiàn)將一個(gè)33的矩陣轉(zhuǎn)置。#include stdio.hvoid tranf(int (*p)3) int t,i,j; for(i=0;i3;i+) for(j=0;ji;j+) t=pij; pij=pji; pji=t; main() int i,j,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); tranf(a); for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d,aij);printf(n); 將上面程序tranf函數(shù)中的的方括號(hào)改成*號(hào)的表示形式,調(diào)試并運(yùn)行程序。程序輸入:1 2 3 4 5 6 7 8 9,記錄程序的輸出。2 用指向指針的方法對(duì)n個(gè)整數(shù)排序并輸出。要求將排序單獨(dú)寫一個(gè)函數(shù)。n和各個(gè)整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。四 注意事項(xiàng)1 一個(gè)指針變量定義后,必須使其指向確定值(即給它賦值),否則,如果直接應(yīng)用它的目標(biāo),就會(huì)破壞內(nèi)存,使程序出錯(cuò),甚至造成死機(jī)。2 注意二維數(shù)組元素的不同表示方法,必須靈活掌握。3 字符數(shù)組保存一字符串后,其長(zhǎng)度一般不再起作用,對(duì)它的各種操作以字符串結(jié)束,標(biāo)志0作為結(jié)束條件。4 字符串中%s格式整體輸入和輸出時(shí),其輸入輸出項(xiàng)均為數(shù)組名。5 當(dāng)用一個(gè)字符串給一字符型變量賦值時(shí),是把該字符串的首地址賦值給它,而不是該字符串。字符型指針變量的目標(biāo)是一個(gè)字符,而不是整個(gè)字符串。實(shí)驗(yàn)八 結(jié)構(gòu)體和文件一 實(shí)驗(yàn)?zāi)康? 掌握結(jié)構(gòu)體類型的概念和定義方法與使用。2 掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用。3 掌握文件的基本概念4 掌握文件指針與打開、關(guān)閉文件的相關(guān)函數(shù)二 實(shí)驗(yàn)內(nèi)容1 定義一個(gè)結(jié)構(gòu)體類型,其成員包括:學(xué)號(hào)(num),姓名(name20),性別(sex),年齡(age),三門課的成績(jī)(score3)。2 按上面的結(jié)構(gòu)體類型定義一個(gè)結(jié)構(gòu)體數(shù)組并初始化,然后調(diào)用一個(gè)函數(shù)count,在該函數(shù)中計(jì)算出每個(gè)學(xué)生的總分和平均分,最后返回主函數(shù)輸出所有各項(xiàng)數(shù)據(jù)(包括原有的和新求出的)?!咎崾尽?在定義結(jié)構(gòu)體類型時(shí)應(yīng)預(yù)留出準(zhǔn)備計(jì)算結(jié)果的成員項(xiàng)。 設(shè)結(jié)構(gòu)體變量為函數(shù)參數(shù),將各數(shù)據(jù)傳給count函數(shù)。#include stdio.hstruct student char num9, name20, sex; int age,score3,sum; float av;st3=06040106,Li Ping, M, 18, 87,89,91, 06040125,Chen Fen, F, 19, 78,75,81, 06040132,Wang Yifei,M, 19, 65,67,69;void count(struct student *p) int i,j; for(i=0;i3;i+) pi.sum=0;for(j=0;j3;j+) pi.sum+=pi.scorej;pi.av=pi.sum/3.0; void main() int i,j; count(st); printf(The students information:n); printf(Num Name Sex Age Score Sum Averagen); for(i=0;i3;i+) printf(%-10s%-12s%-3c%5d ,sti.num,,sti.sex,sti.age);for(j=0;j3;j+) printf(%3d,s
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品配送夜間管理制度
- 藥店中藥倉(cāng)庫(kù)管理制度
- 藥店常規(guī)用品管理制度
- 營(yíng)林項(xiàng)目結(jié)賬管理制度
- 設(shè)備借用使用管理制度
- 設(shè)備安全工具管理制度
- 設(shè)備數(shù)據(jù)聯(lián)動(dòng)管理制度
- 設(shè)備點(diǎn)檢包機(jī)管理制度
- 設(shè)備設(shè)施節(jié)能管理制度
- 設(shè)計(jì)公司電腦管理制度
- 《短歌行》《歸園田居(其一)》比較閱讀
- 人教小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)綜合與實(shí)踐《怎樣通知最快》示范公開課教學(xué)課件
- 脫不花三十天溝通訓(xùn)練營(yíng)
- 2023年湖南常德中考語(yǔ)文真題及答案
- “滾球法”計(jì)算接閃器保護(hù)范圍
- 生產(chǎn)專案持續(xù)改善工作匯報(bào)
- 2022年南通如皋市醫(yī)療系統(tǒng)事業(yè)編制鄉(xiāng)村醫(yī)生招聘筆試試題及答案解析
- SB/T 10347-2017糖果壓片糖果
- GB/T 7689.2-2013增強(qiáng)材料機(jī)織物試驗(yàn)方法第2部分:經(jīng)、緯密度的測(cè)定
- GB/T 35124-2017天文望遠(yuǎn)鏡技術(shù)要求
- GB/T 1303.4-2009電氣用熱固性樹脂工業(yè)硬質(zhì)層壓板第4部分:環(huán)氧樹脂硬質(zhì)層壓板
評(píng)論
0/150
提交評(píng)論