c程序設(shè)計實驗報告_第1頁
c程序設(shè)計實驗報告_第2頁
c程序設(shè)計實驗報告_第3頁
c程序設(shè)計實驗報告_第4頁
c程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1C語言實驗內(nèi)容及說明(2006級1-3班)實驗報告填寫說明:實驗課程:C語言程序設(shè)計設(shè)課形式:非獨立課程學(xué)分:4實驗室名:實驗樓A309實驗項目項目類型項目學(xué)時實驗日期報告日期TurboC環(huán)境的認(rèn)識與使用基礎(chǔ)207.3.9(應(yīng)該為實際日期07.3.12(寫報告的日期數(shù)據(jù)類型和表達式計算基礎(chǔ)23.1607.3.19順序結(jié)構(gòu)程序設(shè)計基礎(chǔ)23.2307.3.26選擇結(jié)構(gòu)程序設(shè)計基礎(chǔ)24.607.4.9循環(huán)結(jié)構(gòu)程序設(shè)計設(shè)計24.1307.13.16使用數(shù)組程序設(shè)計綜合44.20/4.2707.4.30模塊化程序設(shè)計設(shè)計45.11/5.1807.5.21編譯預(yù)處理綜合25.2507.5.28使用指針的程序設(shè)計綜合46.1/6.807.6.11使用結(jié)構(gòu)和聯(lián)合進行程序設(shè)計綜合26.1507.6.18使用文件的程序設(shè)計基礎(chǔ)26.2207.6.25實驗1TurboC環(huán)境的認(rèn)識與使用【實驗?zāi)康暮鸵蟆渴煜に糜嬎銠C系統(tǒng)的基本操作方法。學(xué)習(xí)TurboC3.0的使用方法,掌握程序編輯、編譯、連接、運行及查看運行結(jié)果的方法。掌握C程序的基本結(jié)構(gòu)。【實驗內(nèi)容】熟悉使用的計算機系統(tǒng)的基本操作,創(chuàng)建自己的工作目錄,參照附錄中介紹的方法,掌握TurboC3.0的啟動方法(一種或多種),了解TurboC3.0系統(tǒng)的安裝路徑和結(jié)構(gòu)。進入TurboC3.0的工作環(huán)境,參照附錄設(shè)置環(huán)境,用File/Changedir…設(shè)置當(dāng)前工作目錄、用Options/Directories設(shè)置系統(tǒng)的安裝路徑、包含文件路徑、標(biāo)準(zhǔn)庫文件路徑、輸出文件路徑和源文件路徑。熟悉TurboC3.0的系統(tǒng)菜單組成及功能。學(xué)習(xí)使用功能鍵和快捷鍵調(diào)用菜單項的方法。掌握文件建立、編輯、修改和保存的方法。落實文件的存儲位置是否是你的工作目錄,如果不是,回第二步重新設(shè)置。了解編譯、連接和運行命令在屏幕菜單項的位置和調(diào)用方法。說明:根據(jù)自己的實驗情況可自己增加,但給出的實驗內(nèi)容要完成。【實驗條件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】1.輸入并運行下面最簡單的C程序=1\*GB3①使用File菜單的New命令創(chuàng)建一個新文件。=2\*GB3②在編輯區(qū)輸入下面程序: #include<stdio.h> main() { printf("HelloWorld!\n"); }=3\*GB3③按功能鍵F9進行編譯和連接,觀察屏幕顯示的編譯信息。如果出現(xiàn)出錯信息,信息窗口中將顯示錯誤內(nèi)容及定位錯誤時的語句行號,修改錯誤,再進行編譯。=4\*GB3④如果編譯無錯,按Ctrl+F9運行程序,按Alt+F5切換到用戶屏,觀察運行結(jié)果。=5\*GB3⑤改變源程序中雙引號內(nèi)的字符串內(nèi)容,重新編譯和連接,并查看運行結(jié)果。=6\*GB3⑥保存文件,查看你的工作目錄下是否有該文件。編譯連接的中間文件應(yīng)該在Output設(shè)置的目錄中。如果沒有設(shè)置Output目錄,中間文件應(yīng)該在當(dāng)前工作目錄中。2.輸入并運行下面一個需要在運行時輸入數(shù)據(jù)的程序,程序要求從鍵盤輸入三個浮點數(shù),輸出它們的和。 #include<stdio.h> main() {floata,b,c,sum; printf("inputa,b,c:"); scanf("%f%f%f",&a,&b,&c); sum=a+b+c; printf("\nsum=%f\n",sum); }=1\*GB3①輸入該程序,然后進行編譯和連接,如果出錯,仔細(xì)檢查并修改錯誤,再進行編譯連接,直到?jīng)]有錯誤為止。=2\*GB3②按Ctrl+F9運行程序,按照屏幕提示輸入a、b、c三個變量的值,變量值之間用空格分隔,輸入完畢按回車鍵【Enter】。=3\*GB3③查看運行結(jié)果,判斷結(jié)果正確與否。=4\*GB3④保存文件,查看你的工作目錄下是否有該文件。說明:實驗過程根據(jù)自己的實驗設(shè)計方案作相應(yīng)的修改。【實驗數(shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗2、數(shù)據(jù)類型和表達式計算【實驗?zāi)康暮鸵蟆?.掌握C語言基本數(shù)據(jù)類型的概念,理解數(shù)據(jù)類型與運算的關(guān)系。2.熟悉簡單變量的定義和賦值方法,掌握不同類型數(shù)據(jù)之間賦值的規(guī)律。3.學(xué)習(xí)C語言運算符優(yōu)先級和結(jié)合性的概念,掌握算術(shù)表達式的計算方法及表達式計算中的類型轉(zhuǎn)換方法。4.掌握數(shù)學(xué)表達式的程序表示方法。5.進一步熟悉C程序的編輯、編譯、連接和運行的過程?!緦嶒瀮?nèi)容】1.編程計算下面數(shù)學(xué)表達式的值 (1)(2)c×(3)lnln(103.5+2)2.下面表達式計算中,哪些地方會發(fā)生類型轉(zhuǎn)換?各個轉(zhuǎn)換從什么類型轉(zhuǎn)換到什么類型?表達式計算的結(jié)果是什么?試編程進行驗證。 (1)2.5+2*7%2/4 (2)4*(2L+6.5)-12 (3)10/(5*3) (4)2*10.0/(5*3)3.設(shè):x=2.7,a=8,y=4.5,編程計算下面表達式的值:y+a%5*(int)(x+y)/2%44.輸入并運行下面程序,對照程序分析運行結(jié)果:將一個大于32767的長整型數(shù)賦給整型變量,會得到什么結(jié)果。將一個負(fù)整數(shù)賦給一個無符號的變量,會得到什么結(jié)果。將一個字符型變量賦給一個整型變量,會得到什么結(jié)果。程序如下:#include<stdio.h>main(){inta,b;longd,e;unsignedf,g;charc;a=100;b=-100;c='a';d=50000;e=32767;printf("%d,%d\n",a,b);printf("%ld,%ld\n",d,e);printf("%c,%d\n",c,c);f=a;g=b;printf("%u,%u\n",f,g);a=c;printf("%d,%d\n",a,c);a=d;b=e;printf("%d,%d\n",a,b);}說明:根據(jù)自己的實驗情況可增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成?!緦嶒灄l件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗3順序結(jié)構(gòu)程序設(shè)計【實驗?zāi)康暮鸵蟆?.熟練掌握格式輸入與格式輸出函數(shù)的使用,理解scanf函數(shù)的工作過程。2.熟練掌握賦值語句的使用方法。3.進一步體會C程序的結(jié)構(gòu)組成,體會主函數(shù)main的作用。4.使用順序結(jié)構(gòu)解決幾個簡單的計算問題?!緦嶒瀮?nèi)容】編寫程序,使用格式輸入函數(shù),從鍵盤按順序輸入下列數(shù)據(jù),再將其用合適的格式分類輸出到屏幕上。注意scanf函數(shù)的格式要求?!產(chǎn)’、15、‘c’、100、20.6、60000、3500、32768、450.34、126.3455568編程計算半徑r=2.5的圓面積、圓周長、球面積、球體積及球表面積。如果高h(yuǎn)=4.5,計算圓柱體的表面積和體積。顯示結(jié)果保留兩位小數(shù)。分析程序運行結(jié)果思考驗證程序說明:根據(jù)自己的實驗情況可增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成?!緦嶒灄l件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】1.2.3.輸入下面程序并運行#include<stdio.h>main(){inta,b,c;a=getchar();b=getchar();c=getchar();printf("a=%db=%dc=%d\n",a,b,c);printf("a=%cb=%cc=%c\n",a,b,c);}輸入:1【Enter】 ab【Enter】分析本題程序的輸出結(jié)果,解釋scanf函數(shù)的工作過程,試用其他輸入數(shù)據(jù)驗證你的分析結(jié)果。4.以下C程序的功能是:從鍵盤依次輸入4個整數(shù),計算并輸出這4個數(shù)的平均值。#include<stdio.h>main(){inta,b,c,d,av;printf("Inputa,b,c,d:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);av=(a+b+c+d)/4;printf("av=%f\n",av);}【思考驗證】觀察上題運行結(jié)果,想一想為什么,將最后一句中的“%f”改為“%d”,觀察結(jié)果有什么變化,如果想使計算結(jié)果為實數(shù),如何修改程序?如果想計算4個實數(shù)的平均數(shù),如何修改程序?根據(jù)自己的實驗內(nèi)容可補充?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗4選擇結(jié)構(gòu)程序設(shè)計【實驗?zāi)康摹?.理解C語言表示邏輯量的方法,學(xué)會正確使用邏輯運算符和邏輯表達式。2.掌握利用if結(jié)構(gòu)實現(xiàn)選擇結(jié)構(gòu)的方法。3.掌握利用switch結(jié)構(gòu)實現(xiàn)多分支選擇結(jié)構(gòu)。4.掌握若干簡單算法。5.學(xué)習(xí)選擇結(jié)構(gòu)程序的調(diào)試?!緦嶒瀮?nèi)容】1.編寫程序計算下面分段函數(shù)的值:2x+5(x<0)f(x)=x2-x+3(0≤x<10)x3-7x(x≥10)具體要求如下:用if語句實現(xiàn)分支,自變量和函數(shù)值均用雙精度類型。自變量用scanf函數(shù)輸入,給一些輸入提示。分別輸入三種區(qū)間中x的值,檢查輸出函數(shù)值是否正確。2.編寫程序,用scanf函數(shù)輸入一個年份,計算該年2月份有多少天。閏年的條件為:年份能被4整除但不能被100整除,或者年份能被400整除。3.下面的程序,按顏色代碼和顏色名稱的對應(yīng)關(guān)系,根據(jù)輸入的顏色號,輸出對應(yīng)的顏色名稱:0--Black,1--Blue,2--Green,3--Red,4--Yellow#include<stdio.h>main(){intcolor;/*用整型數(shù)表示顏色號*/printf("Entercolornumber:");scanf("%d",&color);switch(color){case0:printf("Black\n");break;case1: printf("Blue\n");break;case2: printf("Green\n"); break;case3: printf("Red\n"); break;case4: printf("Yellow\n"); break;default:printf("ErrorInput\n");}運行程序,使用TurboC中跟蹤執(zhí)行功能(功能鍵F8)查看程序執(zhí)行過程。體會break語句的作用。去掉若干個break語句,觀察運行結(jié)果有什么變化。并試著將程序結(jié)構(gòu)改為嵌套if結(jié)構(gòu)。運行并查看結(jié)果。scanf函數(shù)輸入一個百分制成績,輸出成績等級A、B、C、D、E,其中90~100分為A,80~89分為B,70~79分為C,60~69分為D,60分以下分為E。要求百分制成績用整數(shù)輸入,在輸入前要有提示,輸入后要判斷成績的合理性,對不合理的成績,應(yīng)輸出出錯信息。輸出結(jié)果中應(yīng)包括百分制和等級成績,并要有文字說明。使用if語句和switch語句分別實現(xiàn)?!舅伎简炞C】輸入a,b,c三個整數(shù),要求將絕對值最大者打印輸出。分析提示:此題的關(guān)鍵是絕對值如何表示,x的絕對值也以表示成:abs(x)??梢杂脗未a寫出程序的算法。Ifabs(a)>abs(b)則x=a否則x=b(這時說明x中存放著a、b中絕對值較大的一個數(shù));如果ifabs(x)>abs(c)則絕對值較大的一個是x,否則絕對值較大的一個是c。2.已知直角三角形的兩直角邊長為a,b,求斜邊長的值,保留一位小數(shù)。分析提示:在這個題中計算,要用到一個數(shù)學(xué)函數(shù)sqrt(x),這個函數(shù)在math.h頭文件中。寫出程序代碼。說明:可選擇其中的部分內(nèi)容,在完成以上所有內(nèi)容的基礎(chǔ)上也可以適當(dāng)增加實驗內(nèi)容。【實驗條件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗5循環(huán)結(jié)構(gòu)程序設(shè)計【實驗?zāi)康暮鸵蟆?.練習(xí)并掌握利用while語句、for語句、do_while語句實現(xiàn)循環(huán)結(jié)構(gòu)的方法。2.掌握循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)的嵌套設(shè)計方法。3.掌握多重循環(huán)的設(shè)計方法,掌握控制語句break、continue、goto語句的使用方法。4.調(diào)試和修改循環(huán)結(jié)構(gòu)的程序?!緦嶒瀮?nèi)容】1.編寫程序,分別用while循環(huán)、for循環(huán)和do_while循環(huán)計算12+22+...+n2的值。比較三個程序在循環(huán)控制上的特點。2.用迭代法求方程x3-x-1=0在x=1.5附近的根。要求:首先把方程變換為迭代公式:x=,用1.5作迭代的初值,結(jié)束條件為兩次近似解之差的絕對值小于0.0001。參考程序如下:#include<stdio.h>#include<math.h>main(){floatx1,x=1.5;do{x1=x;x=pow((x+1),1.0/3.0);}while(fabs(x-x1)>=0.0001);printf("x=%6.2f\n",x);}編寫程序,計算菲波那契數(shù)列第n項的值。注意數(shù)列項的數(shù)據(jù)類型,應(yīng)考慮足夠大項的數(shù)據(jù)表示要求。4.以下程序,輸出下三角形狀的乘法九九表。#include<stdio.h>main(){inti,j;for(i=1;i<=9;i++)/*打印表頭*/printf("%4d",i);printf("%c",'\n');for(i=0;i<=50;i++)printf("%c",'_');printf("%c",'\n');for(i=1;i<=9;i++)/*循環(huán)體執(zhí)行一次,打印一行*/{for(j=1;j<=i;j++)printf("%4d",i*j);/*循環(huán)體執(zhí)行一次,打印一個數(shù)據(jù)*/printf("%c",'\n');/*每行尾換行*/}printf("%c",'\n');}輸入并執(zhí)行該程序,觀察輸出結(jié)果,試著修改程序打印上三角形狀的乘法九九表?!舅伎简炞C】輸出100-999之間的全部素數(shù)。說明:可選擇其中的部分內(nèi)容,在完成以上所有內(nèi)容的基礎(chǔ)上也可以適當(dāng)增加實驗內(nèi)容。【實驗條件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗6使用數(shù)組程序設(shè)計【實驗?zāi)康暮鸵蟆?.掌握一維數(shù)組與二維數(shù)組的定義、使用及初始化方法。2.學(xué)習(xí)數(shù)組作為函數(shù)參數(shù)的用法。3.掌握字符數(shù)組和字符串函數(shù)的使用方法。4.掌握數(shù)組的一種排序算法,進一步理解模塊化程序設(shè)計的方法?!緦嶒瀮?nèi)容】1.設(shè)計程序按步驟完成下列任務(wù):(1)編寫函數(shù)sort,實現(xiàn)對整數(shù)數(shù)組排序的功能,具體排序方法可以使用冒泡或選擇法,由用戶自定。(2)主函數(shù)中,定義數(shù)組并使用初始化方法給出數(shù)組初值。測試數(shù)據(jù)為{16,5,8,12,1,17,3,6,10,2}。(3)主函數(shù)中調(diào)用sort函數(shù)實現(xiàn)對測試數(shù)據(jù)排序的功能。要求分別打印出排序前后數(shù)組元素的值。下面程序?qū)崿F(xiàn)將一個字符串倒置的功能,編寫程序,從鍵盤接受一個字符串,利用給出的函數(shù)daozhi判定輸入的字符串是否為回文。倒置是指將字符串中的字符按相反順序排列,如abcde倒置后變?yōu)閑dcba。所謂回文是指正序和反序字符排列方式相同的字符串,如abcDcba是回文。字符串倒置的函數(shù)如下:voiddaozhi(charstr[]){inti,k,n;charc,*s=str;for(n=0;s[n]!='\0';n++);/*統(tǒng)計串長*/n--;/*最后一個字符位置*/printf("n=%d\n",n);for(i=0;i<=n/2;i++){c=str[i];str[i]=str[n-i];str[n-i]=c;}}提示:使用字符串函數(shù)strcpy和strcmp。使用字符指針數(shù)組表示一個星期中每天的英文名稱,編寫程序,從鍵盤輸入0-6中間的一個數(shù)字,輸出對應(yīng)星期幾的英文名稱。要求:使用switch結(jié)構(gòu)。4.設(shè)有下列矩陣:A=編寫程序,用二維數(shù)組存儲矩陣元素,從鍵盤輸入數(shù)據(jù),將矩陣轉(zhuǎn)置后按行輸出?!舅伎简炞C】1.填補空出的語句,以使程序完整,然后上機驗證。(1)下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo)。main(){intk,p;ints[]={1,-9,7,2,-10,3};for(p=0,k=p;p<6;p++)if(s[p]>s[k])_____________;printf(“%d\n”,k);}【程序分析提示】主要考慮最大元素下標(biāo)k和循環(huán)變量p之間的關(guān)系。

(2)下面程序的功能為求主、次對角線元素之和。main(){staticinta[][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(________)s1=s1+a[i][j];if(________)s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}【程序分析提示】主要考慮主對角線行、列之間有何關(guān)系?次對角線行、列之間的關(guān)系?

3.編寫下列程序,上機調(diào)試、驗證。(1)求2個3×3矩陣對應(yīng)元素之和,并存入矩陣C中,然后輸出矩陣C。設(shè)計步驟:①

定義3個3×3矩陣a,b,c;②

設(shè)計用雙重循環(huán)給矩陣a、b賦值;③

用雙重循環(huán)求矩陣a、b對應(yīng)元素之和并賦給矩陣c;④

用雙重循環(huán)輸出矩陣c對應(yīng)的元素設(shè)a是一個M*N*L的三維數(shù)組,給出a[i][j][k]的地址計算公式。讀如下程序,找出其中的所有錯誤。1)

main()2)

{inta,x[10];3)

chars[100];4)

doubleA,B,a,b;5)

for(i=0;i<10;i++)scanf(“%c”,x[i]);6)

scanf(“%d%d”,&A,&B);7)

for(i=0;i<50;i++)scanf(“%c”,s[i]);8)

ifA>Bthena=b=1elsea=b=2;9)

printf(“%d,%d\n”,x[0]=A+x[10],B+x[10]);10)

printf(“s=%s\n”,s);說明:可選擇其中的一部分內(nèi)容,根據(jù)自己的實驗情況也可適當(dāng)增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成。【實驗條件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗7模塊化程序設(shè)計【實驗?zāi)康暮鸵蟆?.掌握C語言中定義函數(shù)的方法2.掌握函數(shù)嵌套調(diào)用和遞歸調(diào)用的方法。3.掌握通過“值傳遞”調(diào)用函數(shù)的方法。4.理解變量作用域和存在期的概念,掌握全局變量和局部變量,動態(tài)變量和靜態(tài)變量的定義、說明和使用方法。5.學(xué)習(xí)多文件程序的組織方法【實驗內(nèi)容】編寫程序,設(shè)計一個判別素數(shù)的函數(shù),在主函數(shù)中輸入一個整數(shù),調(diào)用這個判別函數(shù),并輸出是否為素數(shù)的信息。參考例4.7相應(yīng)程序,準(zhǔn)備5個以上測試數(shù)據(jù)。驗證程序執(zhí)行結(jié)果是否正確。2.編寫程序,計算下面公式并輸出結(jié)果。要求:(1)編寫一個函數(shù)計算n!(2)編寫主函數(shù),由鍵盤輸入n和m,調(diào)用(1)中的函數(shù)完成計算。(3)輸入n和m要給出提示,并檢查n和m的合理性,不合理的輸入應(yīng)輸出錯誤信息,并不再進行計算。(4)運行程序并計算、、、、。3.將一個正整數(shù)n以相反的順序輸出的遞歸算法可以如下描述:如果要輸出的整數(shù)只有一位則 輸出該整數(shù)否則 輸出整數(shù)的個位數(shù)字 反向輸出除個位以外的全部數(shù)字結(jié)束據(jù)此算法設(shè)計的遞歸算法如下:voidprintn(intn){if((n>=0)&&(n<=9))printf("%d",n);else{printf("%d",n%10);printn(n/10);}}請編寫主程序,調(diào)用上述算法,反向輸出正整數(shù)n。如輸入123,則輸出321。4.按步驟完成多文件程序的設(shè)計過程,掌握多文件程序的設(shè)計方法。(1)輸入源文件file1.c和file2.c。file1.c的內(nèi)容如下:#include<stdio.h>externvoidcount(int);/*函數(shù)count的定義在本文件以外。main(){intk;for(k=5;k<=10;k++)count(k);}file2.c的內(nèi)容如下:voidcount(intn){staticintnum=0;num++;printf("mainn=%dcountnum=%d\n",n,num);}函數(shù)count顯示該函數(shù)被調(diào)用的次數(shù)及從調(diào)用函數(shù)傳入的參數(shù)值。(2)建立項目文件,TurboC3.0建立項目文件的方法非常簡單:建立一個新文件,輸入下列內(nèi)容: file1.c file2.c存盤時,指定文件名的擴展類型為prj即可。本例將文件存盤為work.prj。(3)執(zhí)行Project/ProjectName,在輸入框中輸入work.prj回車。(4)編譯連接,生成的執(zhí)行文件應(yīng)為work.exe。如果源文件中出錯,編譯程序會將出錯文件打開。修改錯誤后重新進行編譯?!舅伎简炞C】注:此處的問題涉及數(shù)組和函數(shù)參數(shù)問題,可根據(jù)教學(xué)安排調(diào)整試驗順序(1)輸入一個數(shù)組,利用自定義函數(shù)求數(shù)組的平均數(shù)(用數(shù)組做參數(shù))。(2)用自定義函數(shù)實現(xiàn)將兩個字符串連接的程序。(4)給出一個二維數(shù)組,求其主對角線元素之和。(5)自定義函數(shù)countc的功能是統(tǒng)計array數(shù)組中大寫字母的個數(shù),并返回大寫字母的數(shù)目。(6)下列程序的功能是計算函數(shù)f(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。(7)用遞歸方法計算學(xué)生的年齡,已知第一位學(xué)生年齡最小,為10歲,其余學(xué)生一個比一個大2歲,求第5位學(xué)生的年齡。(8)以下函數(shù)p的功能是用遞歸方法計算xX的n階勒讓德多項式的值。已有調(diào)用語句p(n,x);請編寫p函數(shù)。遞歸公式如下:說明:可選擇其中的一部分內(nèi)容,根據(jù)自己的實驗情況也可適當(dāng)增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成?!緦嶒灄l件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出。【實驗數(shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗8編譯預(yù)處理【實驗?zāi)康摹?.掌握宏定義的方法2.掌握文件包含的處理方法3.掌握條件編譯的方法【實驗內(nèi)容】1.下面定義的宏,互換兩個參數(shù)的值。在主函數(shù)中調(diào)用此宏分別完成兩個整數(shù)、實數(shù)的互換,輸出已交換后的值。#definechange(a,b)t=b;b=a;a=t;main(){inta,b;floatc,d;{intt;printf("Enterintegera&b:");scanf("%d%d",&a,&b);change(a,b);printf("Nowa=%db=%d\n",a,b);}{floatt;printf("Enterfloatc&d:");scanf("%f%f",&c,&d);change(c,d);printf("Nowc=%fd=%f\n",c,d);}}輸入并運行該程序,觀察運行結(jié)果,體會宏定義實現(xiàn)的過程。比較宏調(diào)用與函數(shù)調(diào)用的區(qū)別。輸入并運行下面的程序,體會編譯程序?qū)Π募奶幚磉^程。(1)在當(dāng)前目錄中建立下面頭文件head.h#defineOK"passed"#defineERROR"error"intg;(2)在當(dāng)前目錄中建立下面程序文件#include<stdio.h>#include"head.h"main(){intk=1;g=5;printf("g=%dk=%d\n",g,k);printf("OK=%sERROR=%s\n",OK,ERROR);}包含文件head.h的處理:將文件內(nèi)容就地展開,相當(dāng)于定義了兩個字符串常量和一個全局整型變量。3.用條件編譯方法實現(xiàn)以下功能:定義一個控制條件編譯的宏,對輸入的一個字符串,或者按原文輸出,或者按倒序輸出。要求:(1)定義宏ORDER,控制字符串的輸出方式。(2)定義倒序輸出字符串的函數(shù)reverse(char*);(3)編寫主函數(shù)用條件編譯實現(xiàn)對輸出方式的控制。說明:根據(jù)自己的實驗情況可增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成?!緦嶒灄l件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗9使用指針的程序設(shè)計【實驗?zāi)康摹空莆帐褂弥羔樧兞康姆椒āU莆諑в兄羔樞螀⒌暮瘮?shù)的定義及調(diào)用方法。3.正確使用函數(shù)指針調(diào)用函數(shù)。4.正確使用指針操作數(shù)組元素。5.正確使用指針數(shù)組操作字符串。【實驗內(nèi)容】編寫程序,使用指針實現(xiàn)打印一維數(shù)組所有元素的操作。要求: 每行打印4個元素。 從鍵盤輸入下面一組數(shù)據(jù)進行測試:5,12,2,6,1,24,15,11,7,3,19,20,13,82.編寫程序,實現(xiàn)交換兩個變量值的操作。要求: 使用形參為指針的函數(shù)swap完成交換功能。 主函數(shù)中,使用整型指針從鍵盤輸入兩個整數(shù),通過調(diào)用swap完成交換。 輸出交換前后的變量值進行比較。3.編寫程序,實現(xiàn)兩個字符串拷貝的函數(shù)strcopy。要求: 不允許使用C的字符串函數(shù)strcpy。 目標(biāo)串的長度不應(yīng)該超過源串的長度。對這個條件進行檢查。主程序中從鍵盤輸入兩個字符串。調(diào)用strcopy函數(shù)實現(xiàn)字符串拷貝操作。輸出拷貝前后,兩個字符串的內(nèi)容。4.下面的程序是一個使用函數(shù)指針調(diào)用函數(shù)的實例。閱讀程序,輸入、編譯、連接,運行并觀察結(jié)果。體會使用函數(shù)指針調(diào)用函數(shù)的步驟。#include<stdio.h>intmax(intx,inty){intm=x;if(y>m)m=y;returnm;}main(){inta,b,c;int(*funp)(int,int);/*定義函數(shù)指針*/printf("Inputa,b:");scanf("%d%d",&a,&b);funp=max;/*函數(shù)指針指向具體的函數(shù)*/c=(*funp)(a,b);/*用函數(shù)指針調(diào)用函數(shù)*/printf("max=%d\n",c);}【思考驗證】1.#include“string.h”main(){chara[5][80],*p[5],**q,**max;inti;for(i=0;i<5;i++)p[i]=a[i];for(i=0;i<5;i++) gets(p[i]);max=&p[0];q=&p[1];for(i=1;i<5;i++,q++)if(strcmp(*max,*q)<0)max=q;puts(*max);}【提示】該程序是對二維數(shù)組和多重指針同時使用的例子,請同學(xué)注意它們之間的關(guān)系。2.寫出下列程序的運行結(jié)果。main(){char*str[]={“ENGLISH”,“MATH”,“MUSIC”,“PHYSICS”,“CHEMISTRY”};char**q;intnum;q=str;for(num=0;num<5;num++)printf(“%s\n”,*(q++));}該程序的運行結(jié)果為:3.findmax函數(shù)將計算數(shù)組中的最大元素及其下標(biāo)值和地址值,請補充編寫*findmax()函數(shù)的內(nèi)容,并最后上機調(diào)試結(jié)果。#include“stdio.h”*findmax(int*s,intt,int*k){

}main(){inta[10]={12,23,34,45,56,67,78,89,11,22},k,*add;add=findmax(a,10,&k);printf(“%d,%d,%o\n”,a[k],k,add);}4.編寫一個函數(shù)s(a,n),其中a是一個一維整型數(shù)組,n是數(shù)組長度,通過指針求數(shù)組中的平均數(shù)。5.利用指針編寫程序,求字符串的長度。6.輸入100個實數(shù),利用指針求其中的最大值和平均值,7.輸入10個數(shù),利用指針編寫將其排序的程序。8.有下面的程序,讀程序,寫出當(dāng)輸入1,2時的運行結(jié)果。main(){inta[2][3]={2,4,6,8,10,12},(*p)[3],i,j;p=a;scanf(“%d,%d”,&i,&j);printf(“a[%d][%d]=%d\n”,i,j,*(*(p+i)+j));}說明:根據(jù)自己的實驗情況可增加實驗內(nèi)容,但給出的實驗內(nèi)容要完成?!緦嶒灄l件】裝有TurboC3.0的PC機【實驗設(shè)計方案】學(xué)生自己設(shè)計【實驗過程】實驗過程根據(jù)自己的實驗內(nèi)容給出?!緦嶒灁?shù)據(jù)和實驗結(jié)果記錄】此部分內(nèi)容由學(xué)生根據(jù)自己的實驗過程給出【實驗結(jié)果分析】詞部分由學(xué)生針對自己實驗過程中出現(xiàn)的問題及實驗結(jié)果給出實驗10使用結(jié)構(gòu)和聯(lián)合進行程序設(shè)計【實驗?zāi)康摹?.掌握結(jié)構(gòu)類型變量與數(shù)組的定義和使用。2.掌握使用結(jié)構(gòu)指針和結(jié)構(gòu)變量名使用結(jié)構(gòu)成員的方法。3.掌握鏈表的基本概念和操作。4.掌握聯(lián)合的概念與使用?!緦嶒瀮?nèi)容】1.從鍵盤輸入5個人的姓名、年齡和性別,然后輸出。要求:分別通過結(jié)構(gòu)指針和結(jié)構(gòu)變量名輸出信息。用函數(shù)data_in實現(xiàn)數(shù)據(jù)輸入,用函數(shù)data_pout實現(xiàn)通過結(jié)構(gòu)指針輸出結(jié)構(gòu)數(shù)據(jù)的操作,用函數(shù)data_nout實現(xiàn)通過結(jié)構(gòu)變量名輸出結(jié)構(gòu)數(shù)據(jù)的操作。2.輸入10本書的名稱和單價,按照單價進行排序。要求:采用結(jié)構(gòu)數(shù)組存儲數(shù)據(jù),使用冒泡或選擇排序算法實現(xiàn)排序。3.下面的程序,構(gòu)造一個如下圖所示的三個結(jié)點的鏈表,并順序輸出鏈表中結(jié)點的數(shù)據(jù)。302010h302010NULLNULLabc實驗10第3題圖示#include<stdio.h>structnode{intdata;structnode*next;/*指向本結(jié)點類型的指針是實現(xiàn)鏈表的基礎(chǔ)*/};main(){structnodea,b,c,*h,*p;/*定義三個結(jié)點h是頭指針*/ a.data=10;b.data=20;c.data=30;/*結(jié)點的數(shù)據(jù)賦值*/ h=&a;/*頭指針指向a結(jié)點*/ a.next=&b;/*a結(jié)點的指針指向b結(jié)點*/ b.next=&c;/*b結(jié)點的指針指向c結(jié)點*/ c.next=NULL;/*c結(jié)點的指針值為空,表示最后一個結(jié)點*/ p=h;/*遍歷每一個結(jié)點,打印數(shù)據(jù)*/ while(p){printf("%d",p->data); p=p->next;/*指針移到下一個結(jié)點*/}}閱讀程序,輸入、編譯、連接,運行并觀察結(jié)果。體會構(gòu)造和使用鏈表的方法。4.輸入并運行下面程序,觀察結(jié)果,分析聯(lián)合變量的存儲特點。#include<stdio.h>{union {inti[2]; longk; charc[4]; }t,*s=&t; s->i[0]=0x39;/*按照整型成員的類型賦值*/ s->i[1]=0x38; printf("%lx\n",s->k);/*按照長整型成員的類型使用儲存內(nèi)容*/ printf("%c\n",s->c[0]);/*按照字符型成員的類型使用儲存內(nèi)容*/

溫馨提示

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

評論

0/150

提交評論