C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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、語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)指導(dǎo)書(shū)第一部分 前言一、實(shí)驗(yàn)的目的學(xué)習(xí)程序設(shè)計(jì)課程不能滿足于“懂得了” ,滿足于能看懂書(shū)上的程序,而應(yīng)當(dāng)熟練地 掌握程序設(shè)計(jì)的全過(guò)程,即獨(dú)立編寫(xiě)源程序、獨(dú)立上機(jī)調(diào)試、獨(dú)立運(yùn)行程序和分析結(jié)果。 上機(jī)實(shí)驗(yàn)的目的, 絕不僅僅是為了驗(yàn)證教材和講課的內(nèi)容, 或者驗(yàn)證自己所編寫(xiě)的程序的正 確與否。程序設(shè)計(jì)課程上機(jī)實(shí)驗(yàn)的目的是: 1加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定。通過(guò)實(shí)驗(yàn)來(lái)掌握語(yǔ)法規(guī)則是行之有效的方法。2熟悉所用的操作系統(tǒng)。3學(xué)會(huì)上機(jī)調(diào)試程序。通過(guò)反復(fù)調(diào)試程序掌握根據(jù)出錯(cuò)信息修改程序的方法。 4通過(guò)調(diào)試完善程序。二、實(shí)驗(yàn)前的準(zhǔn)備工作1了解所用的計(jì)算機(jī)系統(tǒng)(包括編譯系統(tǒng))的性能和

2、使用方法。 2復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容。3準(zhǔn)備好上機(jī)所需的程序,切忌不編程或抄別人的程序去上機(jī)。 4對(duì)程序中出現(xiàn)的問(wèn)題應(yīng)事先估計(jì),對(duì)程序中自己有疑問(wèn)的地方應(yīng)先作上記號(hào),以便上機(jī) 時(shí)給予注意。5準(zhǔn)備好調(diào)試程序和運(yùn)行程序所需的數(shù)據(jù)。三、實(shí)驗(yàn)的步驟上機(jī)實(shí)驗(yàn)應(yīng)一人一組,獨(dú)立實(shí)驗(yàn)。上機(jī)過(guò)程中出現(xiàn)的問(wèn)題,除了是系統(tǒng)的問(wèn)題以外,不 要輕易舉手問(wèn)老師。尤其對(duì)“出錯(cuò)信息” ,應(yīng)善于分析判斷,找出出錯(cuò)的行,然后檢查該行 或其上一行。上機(jī)實(shí)驗(yàn)一般應(yīng)包括以下幾個(gè)步驟: 1雙擊桌面 Visual C+ 快捷方式進(jìn)入 Visual C+, 或通過(guò)執(zhí)行“開(kāi)始 =程序 =Microsoft Visual Studio

3、 6.0= Microsoft Visual C+6.0”或執(zhí)行文件 C:ProgramFilesMicrosoft Visual StudioCOMMONMSDev98BinMSDEV.EXE。2單擊“文件”菜單的“新建”命令。3在打開(kāi)的“新建”對(duì)話框中選擇“文件”標(biāo)簽。4選擇 C+ Source File, 選擇文件保存位置,然后在文件輸入欄中輸入文件名。如圖所示:5輸入源程序。6編譯程序:按“ Ctrl+F7 ”或通過(guò)“編譯”菜單中的“編譯”命令,或使用工具欄中的相 應(yīng)工具進(jìn)行編譯 編譯 連接 運(yùn)行若程序有錯(cuò)則找到出錯(cuò)行修改程序。7連接:若程序沒(méi)有語(yǔ)法錯(cuò)誤,則可按功能鍵或執(zhí)行“編譯”菜單

4、中的“構(gòu)件”命令 或通過(guò)工具欄中的相關(guān)工具(編譯工具右邊工具) ,進(jìn)行連接生成可執(zhí)行文件。8運(yùn)行程序:按組合鍵“ Ctrl+F5 ”,或通過(guò)“編譯”菜單中的執(zhí)行命令,或通過(guò)工具欄中 的“ !”工具運(yùn)行程序。四、寫(xiě)好實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)報(bào)告應(yīng)包括以下內(nèi)容: 1實(shí)驗(yàn)?zāi)康摹?實(shí)驗(yàn)內(nèi)容。3程序清單。4運(yùn)行結(jié)果。5對(duì)運(yùn)行結(jié)果的分析,以及本次調(diào)試程序所取得的經(jīng)驗(yàn)。五、實(shí)驗(yàn)任務(wù)與時(shí)間安排實(shí)驗(yàn)序號(hào)實(shí)驗(yàn)內(nèi)容擬實(shí)驗(yàn)時(shí)間實(shí)驗(yàn) 形式1C 程序的運(yùn)行環(huán)境及運(yùn)行一個(gè) C程序2驗(yàn)證性2數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式2驗(yàn)證性3最簡(jiǎn)單的 C 程序設(shè)計(jì)2驗(yàn)證性4選擇結(jié)構(gòu)程序設(shè)計(jì)2驗(yàn)證性5循環(huán)控制4驗(yàn)證性6數(shù)組4驗(yàn)證性7函數(shù)2驗(yàn)證性8編譯預(yù)處

5、理2驗(yàn)證性9指針2驗(yàn)證性10結(jié)構(gòu)體、共用體6設(shè)計(jì)性11位運(yùn)算2驗(yàn)證性12文件2驗(yàn)證性六、教材C 程序設(shè)計(jì)(第三版) 潭浩強(qiáng)著 清華大學(xué)出版社第二部分 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)一 程序的運(yùn)行環(huán)境和運(yùn)行一個(gè)程序的方法一、實(shí)驗(yàn)?zāi)康?1了解所用的計(jì)算機(jī)系統(tǒng)。2了解在該系統(tǒng)上如何進(jìn)行編輯、編譯、連接和運(yùn)行一個(gè)程序。3通過(guò)運(yùn)行簡(jiǎn)單的程序了解程序的特點(diǎn)。二、實(shí)驗(yàn)內(nèi)容和步驟熟悉所用的系統(tǒng)。了解 Windows 資源管理器的使用方法:文件的查看、復(fù)制、運(yùn)行等方 法, Visual C+ 所在目錄,文本文件的建立方法。2進(jìn)入 Visual C+ ,并新建一個(gè) C+源程序文件。3熟悉 Visual C+ 的集成環(huán)境,了解各菜單

6、項(xiàng)有哪些子菜單。4輸入下面的程序(教材中的例 . ),注意區(qū)分大小寫(xiě)。 #include void main()printf(This is a C program.n);編譯并運(yùn)行程序。5關(guān)閉工作區(qū), 新建一個(gè)程序, 然后對(duì)教材中的例 . 重復(fù)中的操作(即只將程序改為 例 1.2 中的程序,其它操作步驟相同) 。6關(guān)閉工作區(qū),新建一個(gè)程序,然后輸入并運(yùn)行一個(gè)需要在運(yùn)行時(shí)輸入數(shù)據(jù)的程序 #include void main()int a,b,c;int max(int x,int y); printf(input a and b:); scanf(%d,%d,&a,&b); c=max(a,b

7、); printf(nmax=%d,c);int max(int x,int y)int z;if(xy) z=x;else z=y;return(z);(1)運(yùn)行程序,若程序有錯(cuò),則修改錯(cuò)誤后繼續(xù)運(yùn)行程序,當(dāng)沒(méi)有錯(cuò)誤信息時(shí)輸入:2, 5并按 Enter 鍵,查看運(yùn)行結(jié)果。( 2)將程序的第三行改為: int a;b;c; 然后按 F9 看結(jié)果如何,將其修改為 int a,b,c; 將 子程序 max的第 3,4 行合并為一行 , 運(yùn)行程序,看結(jié)果是否相同。7運(yùn)行一個(gè)自己編寫(xiě)的程序 , 程序的功能是輸出兩行文字。實(shí)驗(yàn)二 數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式一、實(shí)驗(yàn)?zāi)康恼莆照Z(yǔ)言數(shù)據(jù)類(lèi)型,熟悉如何定義一個(gè)整型

8、、字符型和實(shí)型的變量, 以及對(duì)它們賦值 的方法。2掌握不同數(shù)據(jù)類(lèi)型之間賦值的規(guī)律。 3學(xué)會(huì)使用的有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式,特別是自加()和 自減()運(yùn)算符的使用。4進(jìn)一步熟悉程序的編輯、編譯、連接和運(yùn)行的過(guò)程。 二、實(shí)驗(yàn)內(nèi)容和步驟 輸入并運(yùn)行下面的程序#includevoid main()char c1 , c2;c1=a;c2=b;printf(%c %c,c1 , c2);()運(yùn)行此程序 ()加入下面的一個(gè)語(yǔ)句作為“ ”前的最后一個(gè)語(yǔ)句: printf(%d,%dn,c1 , c2);()將第行改為:int c1 , c2; 然后再運(yùn)行程序,并觀察結(jié)果是否相同。 ()將第

9、行改為 int c1 , c2; 將第 4,行依次改為: c1=a;c2=b;c1=a;c2=b c1=300;c2=400; 每改為一次后運(yùn)行程序,觀察結(jié)果。2分析教材第章習(xí)題 3.6 中的程序的運(yùn)行結(jié)果,然后輸入該程序并運(yùn)行,將運(yùn)行結(jié)果與前面分析的結(jié)果對(duì)比。3輸入并運(yùn)行下面的程序#includevoid main()int a,b;unsigned c,d;long e,f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf(%d,%dn,a,b);printf(%u,%un,a,b);printf(%u,%un,c,d);c=a=e;d=b=f;pri

10、ntf(%d,%dn,a,b);printf(%u,%un,c,d);請(qǐng)對(duì)照程序和運(yùn)行結(jié)果分析:() 將一個(gè)負(fù)整數(shù)賦給一個(gè)無(wú)符號(hào)的變量, 會(huì)得到什么結(jié)果。 畫(huà)出它們?cè)趦?nèi)存中的表示形 式。() 將一個(gè)大于 32767 的長(zhǎng)整數(shù)賦給一個(gè)整型變量, 會(huì)得到什么結(jié)果。 畫(huà)出它們?cè)趦?nèi)存中 的表示形式。()將一個(gè)長(zhǎng)整數(shù)賦給無(wú)符號(hào)的變量,會(huì)得到什么結(jié)果。畫(huà)出它們?cè)趦?nèi)存中的表示形式。 4輸入習(xí)題 3.10()運(yùn)行程序,注意 i,j,m,n 的值。()將第 4,5 行改為:m=i+;n=+j;再運(yùn)行。()將程序改為:#includevoid main()int i,j;i=8;j=10;printf(%d,%d

11、n,+i,+j);i=8;j=10;printf(%d,%dn,i+,j+);i=8;j=10;printf(%d,%dn,+i,i);i=8;j=10;printf(%d,%dn,i+,i);運(yùn)行程序并分析運(yùn)行結(jié)果。5按習(xí)題 3.7 的要求編程并上機(jī)運(yùn)行:要將“ China ”譯成密碼, 密碼規(guī)律是:用原來(lái)的字母后面第 4個(gè)字母代替原來(lái)的字母。 例如,字母“ A”后面第 4個(gè)字母是 “E”,用“E”代替“A”,因此,“China”應(yīng)譯為“Glmre”。 請(qǐng)編一程序,用賦初值的方法使 c、 c2、c3、c4、c5 這 5 個(gè)變量的值分別為 C,h, i,n, a, 經(jīng)過(guò)計(jì)算, 使 c、c2、c

12、3 、c4、c5 分別變?yōu)椋?G,l,m,r,e,并輸出 .程序提示: main 函數(shù)算法如下:定義 char 型變量 c , c2, c3,c4,c5; 給字符型變量賦值c1=c1+4; c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;輸出 c, c2,c3, c4,c5實(shí)驗(yàn)三 最簡(jiǎn)單的程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1掌握語(yǔ)言中使用最多的一種語(yǔ)句賦值語(yǔ)句的使用方法。 2掌握各種類(lèi)型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式輸出符。二、實(shí)驗(yàn)內(nèi)容和步驟 掌握各種格式輸出符的使用方法。#includevoid main()int a,b;float d,e; char c1 , c2;doub

13、le f,g;long n,m; unsigned p,q;a=61;b=62; c1=a;c2=b;d=3.56; e=-6.87; f=3156 ;g=0.;m=50000;n=-60000; p=32768;q=40000;printf(a=%d,b=%dnc1=%c,c2=%cnd=%6.2f,e=%6.2fn,a,b,c1, c2 ,d,e);printf(f=%15.6f,g=%15.12fnm=%ld,n=%ldnp=%u,q=%un,f,g,m,n,p,q);(1)運(yùn)行此程序并分析運(yùn)行結(jié)果。(2) 在此基礎(chǔ)上,修改程序的第行:a=61;b=62; c1=a;c2=b; f=31

14、56 , ;g=0.;d=f;e=g;p=a=m=50000;q=b=n=-60000; 運(yùn)行程序,分析運(yùn)行結(jié)果。(3)將行改為以下的 scanf 語(yǔ)句,即用 scanf 函數(shù)接收從鍵盤(pán)輸入的數(shù)據(jù): scanf(%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u,&a,&b,&c1, &c2,&d,&e,&f,&g,&m,&n,&p,&q);運(yùn)行程序(無(wú)錯(cuò)誤的情況下)輸入數(shù)據(jù)如下:61,62 ,a,b,3.56,-6.87 , 3156, 0.,50000,-60000,32768 , 400002按習(xí)題 38 的要求編寫(xiě)程序并運(yùn)行:設(shè)圓半徑 r=1.5 ,圓柱高

15、h=3,求圓周長(zhǎng)、圓面積,圓球表面積、圓球體積、圓柱體體積。用 scanf 輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要有文字說(shuō)明,取小數(shù)后 2 位數(shù)字。 程序提示:#define PI 3.14159main 算法如下定義 float 型變量 r,h,L,s1 , s2,v1 ,v2;用 scanf 語(yǔ)句輸入圓半徑和圓柱高 求圓周長(zhǎng)、面積、圓球表面積、圓柱體體積 輸出圓周長(zhǎng)、圓面積、圓球表面積、圓球體體積程序中的 用 PI 代替。3編寫(xiě)程序,用 getchar 函數(shù)讀入兩個(gè)字符給 c1 ,c2,然后分別用 putchar 函數(shù)和 printf 函數(shù)輸出這兩個(gè)字符。實(shí)驗(yàn)四 選擇結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?了

16、解語(yǔ)言表示邏輯值的方法。2學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式的方法。3熟悉 if 語(yǔ)句和 switch 語(yǔ)句。4結(jié)合程序掌握一些簡(jiǎn)單的算法。5學(xué)習(xí)調(diào)試程序的方法。二、實(shí)驗(yàn)內(nèi)容 本實(shí)驗(yàn)要求編程解決以下問(wèn)題,然后上機(jī)調(diào)試運(yùn)行程序。x x 11 y 2x 1 1 x 103x 11 x 10用 scanf 函數(shù)輸入 x 的值,求 y 的值。程序提示 :main 函數(shù)結(jié)構(gòu)如下:定義實(shí)型變量 x 與 y使用 scanf 函數(shù)輸入 x 的值if x1y=xelseif x=90grade=Aelse if score=80grade=Belse if score=70 grade=C else if sc

17、ore=60 grade=D else grade=E 輸出百分制成績(jī)和等級(jí)。( 2)使用 switch 語(yǔ)句的 main 函數(shù)結(jié)構(gòu)如下: 定義 float 型變量 score , char 型變量 grade 輸入百分制成績(jī)賦給 score switch(int(score/10)case 10:case 9: grade=A;break;case 8: grade=B;break;case 7: grade=C;break;case 6: grade=D;break;default: grade=E;break; 輸出百分制成績(jī)和等級(jí)3編程實(shí)現(xiàn):輸入一個(gè)不多于位的正整數(shù),要求:()輸出它是

18、幾位數(shù), ()分別輸出每一位數(shù)字, ()按逆序輸出各位數(shù)字,如原數(shù)為, 則應(yīng)輸出。應(yīng)準(zhǔn)備以下測(cè)試數(shù)據(jù)要處理的數(shù)為位正整數(shù);要處理的數(shù)為位正整數(shù);要處理的數(shù)為位正整數(shù);要處理的數(shù)為位正整數(shù); 要處理的數(shù)為位正整數(shù); 除此之外,程序還應(yīng)當(dāng)對(duì)不合法的輸出作必要的處理。例如: 輸入負(fù)數(shù);輸入的數(shù)超過(guò)位; 程序提示 : main 函數(shù)結(jié)構(gòu)如下: 定義 long 型變量 num, int 型變量 c1,c2,c3,c4,c5 輸入一個(gè)不超過(guò) 5 位的正整數(shù)賦給 num if num99999輸出:輸入的數(shù)超過(guò) 5 位 else if num0)printf(n%ld 是一個(gè) 5 位數(shù) n,num); pr

19、intf( 其各位分別為: %1d,%1d,%1d,%1d,%1dn,c1 , c2,c3, c4, c5); printf( 逆序輸出為: %1d%1d%1d%1d%1dn,c5 ,c4, c3,c2, c1); else if(c20) 是 4 位數(shù),輸出其各位,格式與 5 位數(shù)類(lèi)似else if(c30) 是 3 位數(shù),輸出其各位,格式與 5 位數(shù)類(lèi)似else if(c40) 是 2 位數(shù),輸出其各位,格式與 5 位數(shù)類(lèi)似else if(c50) 是 1 位數(shù),輸出其各位,格式與 5 位數(shù)類(lèi)似 4編程實(shí)現(xiàn):輸入個(gè)整數(shù),要求按由小到大的順序輸出。得到正確結(jié)果后,修改程序使 之按由大到小的順

20、序輸出。main 函數(shù)結(jié)構(gòu)如下:int a,b,c,d,t;輸入 4 個(gè)整數(shù) :賦給 a,b,c,d;if(ab) 交換 a,bif(ac) 交換 a,cif(ad) 交換 a,d if(bc) 交換 b,c if(bd) 交換 b,d if(cd) 交換 c,d 輸出 a,b,c,d實(shí)驗(yàn)五 循環(huán)控制一、實(shí)驗(yàn)?zāi)康氖煜な褂?while 語(yǔ)句 ,do-while 語(yǔ)句和 for 語(yǔ)句實(shí)現(xiàn)循環(huán)的方法。 掌握在程序設(shè)計(jì)中用 循環(huán)的方法實(shí)現(xiàn)一些常用算法(如窮舉、迭代、遞推等) 。二、實(shí)驗(yàn)內(nèi)容上機(jī)完成習(xí)題 6.1 :輸入兩個(gè)正整數(shù) m和 n,求出它們的最大公約數(shù)和最小公倍數(shù)。輸入時(shí),使 mn,觀察結(jié)果是否

21、正確; 修改程序使對(duì)任何的整數(shù)都能得到正確的結(jié)果。程序提示 : main 結(jié)構(gòu)如下:int m,n,r,tm,tn;輸入兩個(gè)正整數(shù)賦給 m,ntm=m;tn=n;if(m=1e-7)e=e+t;i+;p=p*i;t=1.0/p; 輸出 e 的值 3編程求 1到 n中能被 3或 7整除的數(shù)之和。分別用 for 循環(huán)語(yǔ)句和 while 循環(huán)語(yǔ)句完成 本題。程序提示 :for 循環(huán)語(yǔ)句的主要算法如下:for(i=1;i=n;i+)if i 能被 3 或 7 整除 sum=sum+iwhile 循環(huán)語(yǔ)句的主要算法如下:while(i=1;i-)x=2*x+1 實(shí)驗(yàn)六 數(shù)組 一、實(shí)驗(yàn)?zāi)康?1掌握一維數(shù)組

22、與二維數(shù)組的定義、賦值及輸入輸出方法。 2掌握字符數(shù)組和字符串函數(shù)的使用。 3掌握與數(shù)組有關(guān)的算法(特別是排序算法) 二、實(shí)驗(yàn)內(nèi)容用選擇法對(duì)個(gè)整數(shù)排序。個(gè)整數(shù)用 scanf 函數(shù)輸入。 程序提示 :輸入 10個(gè)整數(shù)存放到數(shù)組 a的a1 到 a10 中 輸出 10 個(gè)數(shù)for(i=1;i10;i+)min=i; for(j=i+1;jaj) min=j;交換 ai 與 amin 輸出排序后的 10 個(gè)數(shù) 2有個(gè)數(shù)存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù)要求用折半查找法找出該數(shù)是數(shù)組中的第幾 個(gè)元素的值,如果該數(shù)不在數(shù)組中,則輸出無(wú)此數(shù) , 要找的數(shù)用 scanf 函數(shù)輸入。 程序提示 :用循環(huán)語(yǔ)句輸入 15

23、 個(gè)數(shù) 調(diào)用排序算法對(duì)其進(jìn)行排序 while(flag) 輸入要查找的數(shù) loca=0; top=0; bott=N-1; if(numberaN-1) loca=-1; while(sign=1&top=0) mid=(bott+top)/2;if(number=amid)loca=mid;printf( 找到了 ,數(shù)%d 在數(shù)組的第 %d 位、 n,number,loca+1); sign=0;else if(numberamid) bott=mid-1;else top=mid+1; if(sign=1|loca=-1) printf(n 查無(wú)此數(shù) n); printf(n 是否繼續(xù)查找

24、? (Y/N);scanf(%c,&c);getchar();printf(n);if(c=N|c=n) flag=0;3將兩個(gè)串連接起來(lái),不要用 strcat 函數(shù)。程序提示 : 分別輸入二個(gè)串字符i 指向第一個(gè)數(shù)組的最后一個(gè)空數(shù)組元素while(s2j!=0)s1i+=s2j+;s1i=0;輸出連接后的字符串4找出一個(gè)二維數(shù)組的“鞍點(diǎn)” ,即該位置上的元素在該行上最大,在該列上最小。也 可能沒(méi)有鞍點(diǎn)。至少準(zhǔn)備兩組測(cè)試數(shù)據(jù):()二維數(shù)組有鞍點(diǎn)9 80 205 4090 -60 96 1210 -3 101 89()二維數(shù)組沒(méi)有鞍點(diǎn)9802054090-60961210-31018945541

25、567用 scanf 函數(shù)從鍵盤(pán)輸入數(shù)組的各元素的值, 檢查結(jié)果是否正確, 題目未指定二維數(shù)組 的行數(shù)和列數(shù),程序應(yīng)能處理任意行數(shù)和列數(shù)的數(shù)組。程序提示 :輸入矩陣flag2=0;/ 矩陣中無(wú)鞍點(diǎn)for(i=0;in;i+)/ 找第 i 行的鞍點(diǎn)max=ai0;maxj=0;用 for 循環(huán)語(yǔ)句找第 i 行的最大值存放在 max 中,其下標(biāo) j 保存到 maxj 中 for(k=0,flag1=1;kakmaxj) flag1=0;/max 不是該列的最小元素if(flag1) printf(n 第%d 行第%d 列的%d 是鞍點(diǎn)n,i+ , maxj+ , max); flag2=1; /e

26、ndfori if(!flag2) printf(n 矩陣中無(wú)鞍點(diǎn) n);實(shí)驗(yàn)七 函數(shù)一、實(shí)驗(yàn)?zāi)康?1掌握定義函數(shù)的方法。 2掌握函數(shù)實(shí)參及形參的對(duì)應(yīng)關(guān)系以及“值傳遞”方式。 3掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法。 4掌握全局變量和局部變量,動(dòng)態(tài)變量、靜態(tài)變量的概念和使用方法。 5學(xué)會(huì)對(duì)多文件程序的編譯和運(yùn)行。二、實(shí)驗(yàn)內(nèi)容 寫(xiě)出一個(gè)判別素?cái)?shù)的函數(shù), 在主函數(shù)輸入一個(gè)整數(shù), 輸出是否素?cái)?shù)的信息。本程序應(yīng)準(zhǔn) 備以下測(cè)試數(shù)據(jù): 17, 34, 2, 0, 分別輸入數(shù)據(jù),運(yùn)行程序并檢查結(jié)果是否正確。程序提示 : 求素?cái)?shù)函數(shù)如下: int prime(int n) if n2 return 0 for(

27、i=2;in/2;i+)if n 能被 i 整除 return 0; return 1;main 函數(shù)中輸入一個(gè)整數(shù)賦給變量 n,通過(guò) prime(n) 判斷其是否素?cái)?shù),若函數(shù)值為 1 則是素?cái)?shù)否則不是素?cái)?shù)。 2用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)將一行字符串中最長(zhǎng)的單詞輸出。此行字符從主函數(shù)傳遞給該函數(shù)。 ()把兩個(gè)函數(shù)放在同一個(gè)程序文件中。()將兩個(gè)函數(shù)分別放在兩個(gè)程序文件中,作為兩個(gè)文件進(jìn)行編譯、連接和運(yùn)行。 程序提示 :尋找最長(zhǎng)單詞的起始位置函數(shù):int longest(char string)/n 為字符串的長(zhǎng)度, len 為每個(gè)單詞的長(zhǎng)度 /length 為最長(zhǎng)單詞的長(zhǎng)度, point 為最長(zhǎng)單詞的起

28、始位置 /函數(shù)返回最長(zhǎng)單詞的起始位置 int len=0,i,n,length=0,flag= , place=0,point; n=strlen(string);for(i=0;i=length)length=len; place=point; len=0;return place;在 main 函數(shù)中輸入一行字符,然后調(diào)用上面函數(shù)取得最長(zhǎng)字符的開(kāi)始位置,從該位置 開(kāi)始輸入數(shù)組元素,直到輸出的數(shù)組元素不是英文字母時(shí)止。3用遞歸法將一個(gè)整數(shù) n 轉(zhuǎn)換成字符串。例如輸入 483應(yīng)輸出字符串“” 。n 的位 數(shù)不確定,可以是任意的整數(shù)。程序提示 :void convert(int n)int i;

29、if(i=n/10)!=0)convert(i);putchar(n%10+0);在 main 函數(shù)中輸入一個(gè)整數(shù),然后先輸出該數(shù)的符號(hào),然后調(diào)用函數(shù) convert(n) 。 4求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。用一個(gè)函數(shù)求最大公約數(shù)用另一個(gè)函數(shù)根據(jù)求出的最大公約數(shù)求最小公倍數(shù)。分別用下面的兩種方法編程。 ()不用全局變量,在主函數(shù)中輸入兩個(gè)數(shù)和輸出結(jié)果。 ()用全部變量的方法,數(shù)據(jù)的傳遞通過(guò)全部變量的方法。 程序提示 :使用下面函數(shù)求最大公因子, 其中 v 為最大公因子, 若將 v 設(shè)為外部變量, 則可不使用 return 語(yǔ)句。int hcf(int u,int v)/ 求最大公因子i

30、nt t,r;if(vu)t=u;u=v;v=t; while(r=u%v)!=0)/ 余數(shù) r 不為 0 時(shí)繼續(xù)作輾轉(zhuǎn)相除法 u=v;v=r; return(v); 5寫(xiě)一個(gè)函數(shù),輸入一個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。 程序提示 :輸入時(shí)將十六進(jìn)制數(shù)作為一個(gè)字符串輸入,然后將其每一個(gè)字符轉(zhuǎn)換成十進(jìn)制數(shù)并累 加,轉(zhuǎn)換方法如下: if(si0&si=a&si=A&si=F)n=n*16+si-A+10;實(shí)驗(yàn)八 編譯預(yù)處理一、實(shí)驗(yàn)?zāi)康?掌握宏定義的方法。2掌握文件包含處理方法。3掌握條件編譯的方法。二、實(shí)驗(yàn)內(nèi)容定義一個(gè)帶參數(shù)的宏, 使兩個(gè)參數(shù)的值互換。 在主函數(shù)中輸入兩個(gè)數(shù)作為使用宏的實(shí)參, 輸

31、出已交換后的兩個(gè)值。程序提示 :使用以下宏定義:#define SWAP(a,b) t=b;b=a;a=t 調(diào)用格式: SWAP(a,b);2設(shè)計(jì)輸出實(shí)數(shù)的格式, 包括:() 一行輸出一個(gè)實(shí)數(shù), () 一行內(nèi)輸出兩個(gè)實(shí)數(shù), () 一行內(nèi)輸出三個(gè)實(shí)數(shù)。實(shí)數(shù)用 %6.2f 格式輸出。用一個(gè)文件 printf_format.h 包含以上 用 #define 命令定義的格式,編寫(xiě)一程序,將 printf_format.h 包含到程序中,在程序 中用 scanf 函數(shù)讀入三個(gè)實(shí)數(shù)給 f ,f2 ,f3 ,然后用上面定義的三格式分別輸出: f1; f , f2;f , f2 , f3 。程序提示 :使用以

32、下宏定義:#define PR printf#define NL n#define Fs %f#define F %6.2f#define F1 F NL#define F2 F t F NL#define F3 Ft Ft F NL然后再建立一個(gè) C 程序,程序內(nèi)容如下#include#includep_f.hvoid main()float f , f2, f3;PR(Input three floating numbers f , f2, f3:n);scanf(Fs,&f1);scanf(Fs,&f2);scanf(Fs,&f3);PR(NL);PR(Output one floati

33、ng number each line:n);PR(F, f1);PR(F, f2);PR(F, f3);PR(NL);PR(Output two number each line:n);PR(F2,f, f2);PR(NL);PR(Output three number each line:n);PR(F3,f, f2,f3);實(shí)驗(yàn)九 指針一、實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)進(jìn)一步掌握指針的概念,會(huì)定義和使用指針變量。 2能正確使用數(shù)組的指針和指向數(shù)組的指針變量。 3能正確使用字符串的指針和指向字符串的指針變量。 4能正確使用指向函數(shù)的指針變量。5了解指向指針的指針的概念及其使用方法。二、實(shí)驗(yàn)內(nèi)容以下程序

34、要求使用指針處理。1 輸入三個(gè)整數(shù),按由小到大的順序輸出。運(yùn)行無(wú)錯(cuò)后改為:輸入三個(gè)字符串,按由小到 大的順序輸出。程序提示 :先排序,排序時(shí)交換兩個(gè)數(shù)使用以下函數(shù):void swap(int *p int *p2)int p;p=*p1;*p1=*p2;*p2=p;調(diào)用格式為: swap(&a,&b) 可實(shí)現(xiàn) a 與 b 的交換 字符串的交換使用以下函數(shù):void swap(char *p , char *p2)char p80;strcpy(p,p1);strcpy(p , p2);strcpy(p2 ,p);main 函數(shù)結(jié)構(gòu)如下:int n, n2, n3, *p , *p2 , *p3

35、;void swap(int *p , int *p2); 輸入三個(gè)數(shù)或三個(gè)字符串 p, p2,p3 分別指向這三個(gè)數(shù) if(n1n2) swap(p , p2);if(n1n3) swap(p , p3); if(n2n3) swap(p2 , p3); 輸出這三個(gè)數(shù) 2將一個(gè)的矩陣轉(zhuǎn)置,用一函數(shù)實(shí)現(xiàn)。在一主函數(shù)中用 scanf 函數(shù)輸入以下矩陣元素: 將數(shù)組名作為函數(shù)參數(shù), 在執(zhí)行函數(shù)的過(guò)程中實(shí)現(xiàn)矩陣轉(zhuǎn)置, 函數(shù)調(diào)用結(jié)束后在主函數(shù) 中輸出轉(zhuǎn)置后的矩陣。程序提示 :使用下面函數(shù)實(shí)現(xiàn)矩陣轉(zhuǎn)置 void move(int *p)int i,j,t;for(i=0;i3;i+) for(j=i;j

36、3;j+) t=*(p+3*i+j); *(p+3*i+j)=*(p+3*j+i); *(p+3*j+i)=t;main 函數(shù)結(jié)構(gòu)如下:int a33,*p,i;void move(int *p);用 for 循環(huán)語(yǔ)句輸入矩陣p=&a00;move(p);輸出矩陣3有 n 人圍成一個(gè)圈,順序排號(hào),從第一個(gè)人開(kāi)始報(bào)數(shù)(從到報(bào)數(shù)),凡報(bào)到的人退出圈子,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。程序提示 :報(bào)數(shù)程序段如下: for(i=0;in;i+)*(p+i)=i+1;i=0;/i 為現(xiàn)正報(bào)數(shù)的人的編號(hào)k=0;/k 為 23 計(jì)數(shù)時(shí)的計(jì)數(shù)變量m=0;/m 為退出的人數(shù)while(mn-1) if(*(p+

37、i)!=0)k+; if(k=3)/ 對(duì)退出的人的編號(hào)置 0*(p+i)=0;k=0;m+;i+;if(i=n)i=0;4用一個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)字符串的比較,即自己寫(xiě)一個(gè)strcmp 函數(shù),函數(shù)的原型為:int strcmp(char *p , char *p2);設(shè) p1指向字符串 s,p2 指向字符串 s2要求當(dāng)兩個(gè)字符相同時(shí)返回,若兩個(gè)字符 串不相等,則返回返回它們二者第一個(gè)不同字符的 ASCII 碼的差值。兩個(gè)字符串 s, s2 由主函數(shù)輸入, strcmp 函數(shù)的返回值也由主函數(shù)輸出。程序提示 :使用以下函數(shù)進(jìn)行比較:int strcmp(char *p , char *p2)int i

38、=0;while(*(p1+i)=*(p2+i)if(*(p1+i+)=0) return 0;return *(p1+i)-*(p2+i);5寫(xiě)一個(gè)用矩形法求定積分的通用函數(shù),分別求:1 1 2 xsin xdx cosdxexdx0 1 0說(shuō)明:積分中用到的三個(gè)函數(shù)已在系統(tǒng)的數(shù)學(xué)函數(shù)庫(kù)中,程序開(kāi)頭要加 #include調(diào)用格式為 sin(x),cos(x),exp(x)程序提示 :求積分函數(shù)如下:float integral(float (*p)(float),float a,float b,int n)int i;float x,h,s;h=(b-a)/n;x=a;s=0;for(i=0

39、;in;i+)x=x+h;s=s+(*p)(x)*h;return(s);調(diào)用格式:float (*p)(float);float fsin(float);p=fsin;c=integral(p,a , b, n);fsin 函數(shù)如下:float fsin(float x)n和return sin(x);6用指向指針的指針的方法對(duì)n 個(gè)整數(shù)排序并輸出。要求將排序單獨(dú)寫(xiě)成一個(gè)函數(shù),各整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。程序提示 :排序函數(shù)如下:void sort(int *p,int n)int i,j,*temp;for(i=0;in-1;i+)for(j=i+1;j*(p+j)temp=

40、*(p+i); *(p+i)=*(p+j); *(p+j)=temp;main 函數(shù)如下:void main()void sort(int *p,int n);int i,n,data10,*p,*pstr10;printf(Input n:);scanf(%d,&n);for(i=0;in;i+)pstri=&datai;printf(nInput %d integer number:n,n);for(i=0;in;i+)scanf(%d,pstri);p=pstr;sort(p,n);printf(nNow,the sequence is:n);for(i=0;in;z=z;z=z|(valuen);return(z); unsigned getbits2(unsigned value,int n)unsigned z;z=(1n)&(valuen);return z;main 函數(shù)內(nèi)容如下:int a,n,m;unsigned getbits1(unsigned value,int n);unsigned getbits2(unsigned value,int n);a=0;if(a5)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論