C語言-上機實驗報告材料_第1頁
C語言-上機實驗報告材料_第2頁
C語言-上機實驗報告材料_第3頁
C語言-上機實驗報告材料_第4頁
C語言-上機實驗報告材料_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實用標(biāo)準(zhǔn)青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件 111實驗日期2011.04.21姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗一 C程序的運行環(huán)境和運行C程序的方法實驗?zāi)康募耙?熟悉Visual C+6.0環(huán)境。 2了解建立控制臺應(yīng)用程序的基本步驟。3初步了解Visual C+6.0的環(huán)境設(shè)置。4初步學(xué)會簡單的程序調(diào)試方法。5學(xué)會編寫簡單的C程序。6初步熟悉C語言操輸入scanf函數(shù)、輸出printf函數(shù)的使用。7掌握C語言基本數(shù)據(jù)類型,熟悉變量的定義及變量的初始化和賦值操作。8掌握不同的類型數(shù)據(jù)之間賦值的規(guī)律。9掌握C語言的算術(shù)運算符的使用以及算術(shù)

2、表達(dá)式的使用;掌握自加自減運算符的特點及使用。實驗環(huán)境Visual 6.0+ Windows 7實驗內(nèi)容1按照上述步驟,創(chuàng)建一個基于控制臺的應(yīng)用程序,該程序項目中只包含一個源程序文件。功能為求兩個整數(shù)的和,數(shù)據(jù)從鍵盤輸入。2創(chuàng)建一個基于控制臺的應(yīng)用程序,求一元二次方程的根。使得當(dāng)輸入三個實數(shù)a,b,c(滿足b*b-4*a*c0),能夠求出方程a*x*x+b*x+c=0的兩個實根,并顯示在屏幕上。分析提示: 通過鍵盤輸入方程系數(shù)a,b,c的值,而后根據(jù)求根公式計算并輸出它的兩個根。算法描述及實驗步驟實驗 一 1、 先定義兩個變量 a,b。2、鍵入a和b。3、輸出兩個數(shù)的和。實驗 二1、定義并輸入

3、a b c。2、判斷d=b2-4ac的大小。3、如果小于零則無解,等于零有一個解,x1=(-b)/(2*a)。4、大于零有兩個解。x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);5、輸出結(jié)果。調(diào)試過程及實驗結(jié)果1 2 總結(jié)掌握了掌握C語言基本數(shù)據(jù)類型,變量的定義及變量的初始化和賦值操作,不同的類型數(shù)據(jù)之間賦值的規(guī)律。了解了C語言的算術(shù)運算符的使用以及算術(shù)表達(dá)式的使用,自加自減運算符的特點及使用。附錄實驗一 1#includevoid main()int a,b,s;scanf(%d%d,&a,&b);printf(s=%dn,a+b);實驗一 2#inclu

4、de#includevoid main()double a,b,c,d,x1,x2;printf(a b c :);scanf(%lf%lf%lf,&a,&b,&c);d=b*b-4*a*c;if (d0)printf(無解n);else if (d=0)x1=(-b)/(2*a);printf(一個解:x=%gn,x1);else x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(兩個解:x1=%g,x2=%gn,x1,x2);青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件 111實驗日期2012.4.28姓名趙亞東學(xué)

5、號201107209實驗成績實驗名稱實驗二 選擇結(jié)構(gòu)程序設(shè)計實驗?zāi)康募耙?掌握賦值語句的使用方法。2掌握各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符。3能正確使用關(guān)系運算符及表達(dá)式、邏輯運算符及表達(dá)式。4熟練掌握if語句,學(xué)會使用if-else語句設(shè)計雙分支和多分支結(jié)構(gòu)程序。5熟練掌握switch語句的特點,學(xué)會使用switch語句設(shè)計多分支結(jié)構(gòu)程序。實驗環(huán)境Visual 6.0+ Windows 7實驗內(nèi)容3編寫程序,根據(jù)輸入的學(xué)生成績,給出相應(yīng)的等級。90分以上的等級為A,60分以下的等級為E,其余每10分為一個等級。要求分別用if語句和switch語句實現(xiàn)。4使用switch語

6、句編寫簡單的四則運算程序。算法描述及實驗步驟實驗 3 用if 語句時:先輸入學(xué)生成績,判斷等級,然后直接輸出等級代號A,B,C,D,E。 用switch 語句時:先輸入學(xué)生成績,除以十,取整。根據(jù)數(shù)值6到9判斷等級。然后輸出等級代號A,B,C,D,E。實驗 4 先定義字符變量c和數(shù)值變量a,b。然后判斷字符變量為何種運算符號。最后輸出相應(yīng)結(jié)果。調(diào)試過程及實驗結(jié)果34總結(jié)掌握了賦值語句的使用方法,各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符、關(guān)系運算符及表達(dá)式、邏輯運算符及表達(dá)式。 掌握了if語句,學(xué)會使用if-else語句設(shè)計雙分支和多分支結(jié)構(gòu)程序;掌握了switch語句的特點,學(xué)會使

7、用switch語句設(shè)計多分支結(jié)構(gòu)程序附錄實驗二 3用 if 語句:#includevoid main()int a;printf(請輸入學(xué)生成績:n);scanf(%d,&a);if (a90)printf(該學(xué)生成績等級是 An);else if (a80)printf(該學(xué)生成績等級是 Bn);else if (a70)printf(該學(xué)生成績等級是 Cn);else if (a60)printf(該學(xué)生成績等級是 Dn);else printf(該學(xué)生成績等級是 En);用 switch 語句:#includevoid main()int a,m;printf(請輸入學(xué)生成績:n);sc

8、anf(%d,&a);m=a/10;switch(m)case 9:printf(該學(xué)生的成績等級是:An);case 8:printf(該學(xué)生的成績等級是:Bn);case 7:printf(該學(xué)生的成績等級是:Cn);case 6:printf(該學(xué)生的成績等級是:Dn);default:printf(該學(xué)生的成績等級是:En);實驗二 4#includevoid main()float a,b;char c;scanf(%f%c%f,&a,&c,&b);switch(c)case +:printf(%fn,a+b);break;case -:printf(%fn,a-b);break;c

9、ase *:printf(%fn,a*b);break;case /:printf(%fn,a/b);break;青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-5-2姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗三 循環(huán)結(jié)構(gòu)程序設(shè)計實驗?zāi)康募耙?熟練掌握while、do-while、for語句的特點,學(xué)會設(shè)計循環(huán)結(jié)構(gòu)程序。2掌握break語句以及continue語句的特點及使用范圍。3學(xué)會編寫循環(huán)嵌套程序。3結(jié)合程序掌握一些簡單的算法。4進(jìn)一步學(xué)習(xí)調(diào)試程序。實驗環(huán)境Visual 6.0+ Windows 7實驗內(nèi)容4編程練習(xí)。求 的部分

10、和。直到最后一項的值小于1.0e-4。 提示:第 n 項 un=xn/n!, 第 n+1 項 un+1= xn+1/(n+1)! 及 un+1 = un(x/(n+1)5編程練習(xí)。有1、2、3、4四個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?分別是多少?算法描述及實驗步驟實驗四1、調(diào)用函數(shù)。2、定義x s i j。輸入x。3、直到n大于10000。4、i=i*(x/(j+1); s=s+i; 5、輸出s實驗五 1、定義i j k fre=0。2、利用三重for語句。for(i=1;i=4;i+)for(j=1;j=4;j+);for(k=1;k=4;k+)。3、if(i!=k&i!=j&

11、k!=j),輸出i*100+j*10+k。4、最后輸出(總數(shù)為:%dn,fre) 調(diào)試過程及實驗結(jié)果3、4、總結(jié)(對實驗結(jié)果進(jìn)行分析,問題回答,實驗心得體會及改進(jìn)意見)附錄實驗三 3#include#includevoid main()int x;double s,i,j;scanf(%d,&x);s=1,j=0;for(i=1;i=pow(10,-4);j+)i=i*(x/(j+1);s=s+i;printf(s=%fn,s);實驗三 4#include void main()int i,j,k,fre=0;for(i=1;i=4;i+)for(j=1;j=4;j+)for(k=1;k=4;

12、k+)if(i!=k&i!=j&k!=j)printf(%5d,i*100+j*10+k);fre=fre+1;printf(n);printf(總數(shù)為:%dn,fre);青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-5-2姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗四 數(shù)組程序設(shè)計實驗?zāi)康募耙?.掌握一維數(shù)組、二維數(shù)組的定義、引用及其存儲方式。2.掌握字符數(shù)組、字符串以及字符串?dāng)?shù)組的含義及區(qū)別。3.掌握常用字符函數(shù)及字符串函數(shù)的使用。4.掌握常用數(shù)組的排序、查找等算法。實驗環(huán)境Visual C+6.0 Windows XP實驗內(nèi)容2

13、編寫程序,定義一個含有30個元素的int類型數(shù)組.依次給數(shù)組元素賦奇數(shù)1、3、5、7;然后按每行十個數(shù)順序輸出,最后再按每行十個數(shù)逆序輸出。3已知數(shù)組中的值在0-9的范圍內(nèi),統(tǒng)計每個整數(shù)的個數(shù)。算 法描述及實驗步驟實驗2 1、定義一個一維數(shù)組a30,i,j=1。2、利用for循環(huán)輸出,ai+1=ai+2;printf(%6d,ai)。 3、輸出數(shù)組,定義初始值1或者59。確定順、逆序。實驗 3 1、定義一個一維隨機數(shù)組含20個數(shù)。2、輸出該一維數(shù)組。 3、利用for循環(huán)int m,n,k; for(m=0;m=9;m+) for(n=0;n20;n+) if(m=an)。4、輸出每個數(shù)各有幾個

14、。調(diào)試過程及實驗結(jié)果 2、3、總結(jié)掌握常用字符函數(shù)及字符串函數(shù)的使用,掌握常用數(shù)組的排序、查找等算法。附錄實驗2#includevoid main()int a30,i,j=1;for(i=1;i31;i+)a1=1;ai+1=ai+2;printf(%6d,ai);if(i%10=0)printf(n);printf(n);for(i=1;i31;i+)a1=59;ai+1=ai-2;printf(%6d,ai);if(i%10=0)printf(n);實驗4#include#includevoid main()int i,a20;for(i=0;i20;i+)ai=rand()%10;pr

15、intf(%3d,ai);printf(n);int m,n,k;for(m=0;m=9;m+)k=0;for(n=0;n20;n+)if(m=an)k+;printf(%d有%d個n,m,k);青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-5-7姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗五 函數(shù)實驗?zāi)康募耙?掌握函數(shù)定義的各個要素。如函數(shù)返回值的類型、形式參數(shù)與實際參數(shù)等。2掌握變量的作用域和生存期的概念。3掌握局部變量與全局變量的區(qū)別、靜態(tài)局部變量和局部變量的區(qū)別、靜態(tài)全局變量和全局變量的區(qū)別;理解外部變量和外部函數(shù)的概念。4理

16、解數(shù)組作為函數(shù)的參數(shù)的含義。5理解函數(shù)的嵌套調(diào)用。6掌握函數(shù)的遞歸調(diào)用。實驗環(huán)境Visual C+6.0 window7實驗內(nèi)容3求100200之間的素數(shù)。要求:每行10個數(shù)輸出;定義子函數(shù)isprime,函數(shù)原型為 int isprime( int n);4設(shè)f(x)=(2x3+3x2-4x+1)/(10x2+3),q(x)=3f(x)3+2f(x)2+f(x),編程實現(xiàn)輸入x的值,計算輸出q(x)的值,要求有q(x)和f(x)的定義。5求菲波那契數(shù)列1,1,2,3,5,8,13,21,34的前20項。要求:使用遞歸;每行輸出5個數(shù)。算法描述及實驗步驟實驗3 1、定義函數(shù) isprime(i

17、nt n)。2、當(dāng)(n%i=0)時,返回0.否則返回1。3、定義main函數(shù)。確定范圍100200. 4、當(dāng)isprime函數(shù)成立,每五個一行輸出。實驗 4 1、定義函數(shù)f= (2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3); q= 3*pow(f(x),3)+2*pow(f(x),2)+f(x);。2、定義main 函數(shù)。3、輸出q函數(shù)。實驗 5 1、定義fib函數(shù)。前兩項為1.2、利用遞歸函。Fib(x)= fib(x-1)+fib(x-2);。3、每五項一行輸出。調(diào)試過程及實驗結(jié)果3、4、5、總結(jié)1,掌握了函數(shù)定義的各個要素。2,如函數(shù)返回值的類

18、型、形式參數(shù)與實際參數(shù)等.3,需要進(jìn)一步掌握函數(shù)。附錄實驗 3#includeint isprime(int n)int i;for(i=2;in;i+)if(n%i=0)return 0;return 1;main()int n,m=0;for(n=100;n=200;n+)if(isprime(n)printf(%5d,n);m+;if(m%10=0)printf(n);printf(n);實驗 4#include#includedouble f(float x)double c;c=(2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);return

19、c;double q(float x)double c;c=3*pow(f(x),3)+2*pow(f(x),2)+f(x);return c;main()float x;double y;scanf(%f,&x);y=q(x);printf(%lfn,y);實驗 5#includeint fib(int x)if(x=1|x=2)return 1;elsereturn fib(x-1)+fib(x-2);main()int n,s;for(n=1;n=20;n+)s=fib(n);printf(%-5d,s);if(n%5=0)printf(n);printf(%n);青 島 理 工 大 學(xué)

20、課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-5-16姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗六 指針實驗?zāi)康募耙?.理解指針的定義,學(xué)會指針變量的初始化以及指針可以參與的運算。2.掌握指針和一維數(shù)組的關(guān)系。3.理解指針和二維數(shù)組的關(guān)系、理解行指針(或數(shù)組指針)的概念。4.理解指針數(shù)組和數(shù)組指針的區(qū)別。5.理解指針和函數(shù)的關(guān)系以及指針函數(shù)和函數(shù)指針的含義。6.了解指針的指針(即二級指針)。實驗環(huán)境Visual C+6.0 window7實驗內(nèi)容6編寫程序。讀入三個浮點數(shù),將整數(shù)部分和小數(shù)部分分別輸出。要求使用指針作形參。7編寫一個函數(shù),返回數(shù)組元素中最

21、大值的地址,并在主函數(shù)中輸出該元素。算法描述及實驗步驟實驗6 1、定義函數(shù),指針做形參。2、定義a為整數(shù)部分,*p-a既是小數(shù)部分。然后輸出。3、主函數(shù)中,鍵入三個浮點型數(shù)。并使用fu函數(shù)。實驗71、定義dizhi函數(shù),指針做形參。返回地址。2、定義主函數(shù),以及一個數(shù)組。3、調(diào)用dizhi函數(shù),輸出數(shù)組和最大值。調(diào)試過程及實驗結(jié)果6、7、總結(jié)1.運用指針時應(yīng)時刻注意指針指向的改變,避免邏輯上的錯誤,加大編程時的難度。2.通過指針變量可以提高程序質(zhì)量,編寫程序方便靈活,可以實現(xiàn)多個值的返回附錄實驗6#includevoid fu(float *p)int a;a=(int)*p;printf(整

22、數(shù)部分是%d 小數(shù)部分是%fn,a,*p-a);main()float a3;int i;for(i=0;i3;i+)scanf(%f,&ai);fu(&ai); 實驗7#includeint dizhi(int *p)int s;p=&s;printf(地址是:%dn,p);return p;main()int i,s,a10,*p;for(i=0;i10;i+) ai=rand()%10;printf(%d ,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最大數(shù)是;%dn,s);dizhi(&s);青 島 理 工 大 學(xué)課程實

23、驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-5-16姓名趙亞東學(xué)號201107209實驗成績實驗名稱指針實驗?zāi)康募耙?.理解指針的定義,學(xué)會指針變量的初始化以及指針可以參與的運算。2.掌握指針和一維數(shù)組的關(guān)系。3.理解指針和二維數(shù)組的關(guān)系、理解行指針(或數(shù)組指針)的概念。4.理解指針數(shù)組和數(shù)組指針的區(qū)別。5.理解指針和函數(shù)的關(guān)系以及指針函數(shù)和函數(shù)指針的含義。6.了解指針的指針(即二級指針)。實驗環(huán)境Visual C+6.0 window7實驗內(nèi)容6編寫程序。讀入三個浮點數(shù),將整數(shù)部分和小數(shù)部分分別輸出。要求使用指針作形參。7編寫一個函數(shù),返回數(shù)組元素中最大值的地址,并

24、在主函數(shù)中輸出該元素。算法描述及實驗步驟實驗6 1、定義函數(shù),指針做形參。2、定義a為整數(shù)部分,*p-a既是小數(shù)部分。然后輸出。3、主函數(shù)中,鍵入三個浮點型數(shù)。并使用fu函數(shù)。實驗71、定義dizhi函數(shù),指針做形參。返回地址。2、定義主函數(shù),以及一個數(shù)組。3、調(diào)用dizhi函數(shù),輸出數(shù)組和最大值。調(diào)試過程及實驗結(jié)果6、7、總結(jié)1.運用指針時應(yīng)時刻注意指針指向的改變,避免邏輯上的錯誤,加大編程時的難度。2.通過指針變量可以提高程序質(zhì)量,編寫程序方便靈活,可以實現(xiàn)多個值的返回附錄實驗6#includevoid fu(float *p)int a;a=(int)*p;printf(整數(shù)部分是%d

25、小數(shù)部分是%fn,a,*p-a);main()float a3;int i;for(i=0;i3;i+)scanf(%f,&ai);fu(&ai); 實驗7#includeint dizhi(int *p)int s;p=&s;printf(地址是:%dn,p);return p;main()int i,s,a10,*p;for(i=0;i10;i+) ai=rand()%10;printf(%d ,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最大數(shù)是;%dn,s);dizhi(&s);青 島 理 工 大 學(xué)課程實驗報告課程名稱

26、計算機程序設(shè)計 (C)班級軟件111實驗日期2011-5-30姓名趙亞東學(xué)號201107209實驗成績實驗名稱實驗七 鏈表實驗?zāi)康募耙?掌握結(jié)構(gòu)體類型變量的定義和使用。2掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用。3掌握鏈表的概念,初步學(xué)會對鏈表進(jìn)行操作。實驗環(huán)境VC+6.0實驗內(nèi)容1編寫程序。有5個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、3門課的成績,從鍵盤輸入5個學(xué)生數(shù)據(jù),要求輸出3門課總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號、姓名、3門課的成績、平均分?jǐn)?shù))。2建立一個學(xué)生鏈表,每個結(jié)點包括:學(xué)號、姓名、性別、年齡。輸入一個年齡,如果鏈表中的結(jié)點所包含的年齡等于此年齡,則將此結(jié)點刪去。算法描述及實驗

27、步驟第一題定義一個結(jié)構(gòu)體變量,包含學(xué)號、姓名、3門課的成績定義一個可以輸入學(xué)生信息的函數(shù)。定義一個函數(shù)可以求平均分并返回。輸出3門課總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號、姓名、3門課的成績、平均分?jǐn)?shù))。第二題定義一個結(jié)構(gòu)體變量,包括學(xué)號、姓名、性別、年齡和指向下一個節(jié)點的指針。創(chuàng)建鏈表,輸入學(xué)生信息。定義一個可以輸出學(xué)生信息函數(shù)。定義一個可以刪除節(jié)點的函數(shù),當(dāng)輸入一個年齡時,如果鏈表中的結(jié)點所包含的年齡等于此年齡,則將此結(jié)點刪去。調(diào)試過程及實驗結(jié)果12 總結(jié)熟練地掌握共用體;在寫程序時可以熟練地使用鏈表進(jìn)行數(shù)據(jù)操作。附錄/第一題代碼如下:#include#define N 5void

28、input(struct student stud);double av1(struct student stud);double av2(struct student stud);double av3(struct student stud);int max(struct student stud);struct studentint no;char name10;double degree1;double degree2;double degree3;void main()struct student studN;double aver3,avg;int a,i;input(stud);a

29、ver0=av1(stud);aver1=av2(stud);aver2=av3(stud);a=max(stud);avg=(studa.degree1+studa.degree2+studa.degree3)/3.0;for(i=0;i3;i+) printf(第%d門平均分:t,i+1);printf(%.2lfn,averi);printf(分?jǐn)?shù)最高的學(xué)生信息如下:n);printf(%dt%st%.2lf %.2lf %.2lf %.2lfn,studa.no,,studa.degree1,studa.degree2,studa.degree3,avg);void

30、 input(struct student stud)/輸入N個學(xué)生的信息int i;printf(學(xué)生信息輸入格式:學(xué)號、姓名 、分開輸入三門分?jǐn)?shù)n);for(i=0;iN;i+)printf(輸入第%d個學(xué)生信息:n,i+1);scanf(%d%s%lf%lf%lf,&studi.no,,&studi.degree1,&studi.degree2,&studi.degree3);double av1(struct student stud)/計算第一門課的平均分int i;double a=0.0,b;for(i=0;iN;i+)a+=studi.degree1;b=a

31、/N;return b;double av2(struct student stud)/計算第二門課的平均分int i;double a=0.0,b;for(i=0;iN;i+)a+=studi.degree2;b=a/N;return b;double av3(struct student stud)/計算第三門課的平均分int i;double a=0.0,b;for(i=0;iN;i+)a+=studi.degree3;b=a/N;return b;int max(struct student stud)/查找分?jǐn)?shù)最大的學(xué)生下標(biāo)double m=0,aN;int i,k=0;for(i=

32、0;iN;i+)ai=studi.degree1+studi.degree2+studi.degree3;if(mai)m=ai;k=i;return k;/ 第二題代碼如下:#include#include#define N 3typedef struct stud int no;char name10;char sex10;int age;struct stud *next;Stud;Stud *create();void show(Stud *head);void delet(Stud *head);Stud *getnode(Stud *head,int n);void shan(St

33、ud *head);void main()/主函數(shù)Stud *head;int n;doprintf(1-創(chuàng)建鏈表,2-顯示鏈表,3-刪除相同年齡,0-退出操作n);scanf(%d,&n);switch(n)case 1:head=create();break;case 2:show(head);break;case 3:delet(head);break;default:break;while(n!=0);Stud *create()/創(chuàng)建鏈表儲存學(xué)生信息Stud *p,*head,*r;int i;head=(Stud *)malloc(sizeof(Stud);r=head;print

34、f(輸入學(xué)生信息格式:學(xué)號、姓名、性別、年齡n);for(i=1;ino,p-name,p-sex,&p-age);r-next=p;r=p;r-next=NULL;return head;void show(Stud *head)/顯示學(xué)生信息int i=0;Stud *p=head-next;printf(學(xué)生信息如下:n);while(p!=NULL)printf(第%d個學(xué)生信息:nn,i+1);printf(%dt%st%st%dn,p-no,p-name,p-sex,p-age);p=p-next;i+;Stud *getnode(Stud *head,int n)int i=1;

35、Stud *p=head;if(n1)return NULL;while(p!=NULL&inext;i+;if(p!=NULL)return p;elsereturn NULL;void delet(Stud *head)/刪除與輸入年齡相同的學(xué)生信息int year,i=1,k=1;Stud *p=head-next,*q;printf(輸入要刪除的年齡n);scanf(%d,&year);while(p!=NULL)if(year=p-age)if(k=1)head-next=p-next;free(p); p=head;elseq=getnode(head,k);q-next=p-ne

36、xt;free(p);p=q;elsek+;p=p-next;printf(相同年齡已刪除n);青 島 理 工 大 學(xué)課程實驗報告課程名稱計算機程序設(shè)計 (C)班級軟件111實驗日期2012-6-8姓名趙亞東學(xué)號201107209實驗成績實驗名稱 實驗八 綜合程序設(shè)計實驗?zāi)康募耙?.掌握文件以及緩沖文件系統(tǒng)、文件指針的概念。2.學(xué)會使用文件打開、關(guān)閉、讀、寫等文件操作函數(shù)。3.通過一個綜合程序,使學(xué)生對綜合運用C語言程序設(shè)計語言有初步的認(rèn)識。實驗環(huán)境VC+6.0實驗內(nèi)容一、 學(xué)生管理系統(tǒng)1、 學(xué)生基本信息的管理,包括添加、修改、刪除、查找、全刪等操作;2、 課程數(shù)據(jù)的管理,包括添加、修改、刪

37、除、查找、全刪等操作;3、 學(xué)習(xí)成績數(shù)據(jù)的管理,包括添加、修改、刪除、查找、全刪等操作;4、 學(xué)生成績查詢系統(tǒng),包括按學(xué)號、按課程號、按班號統(tǒng)計學(xué)生的成績。算法描述及實驗步驟首先自定義學(xué)生信息、課程數(shù)據(jù)、學(xué)生成績的結(jié)構(gòu)體,定義這些變量的鏈表,一邊對這些數(shù)據(jù)進(jìn)行操作。一、在寫主函數(shù)時,先把數(shù)據(jù)從文件中提取到鏈表中,操作后再寫入文件中進(jìn)行保存。二、在學(xué)生信息管理系統(tǒng)中,添加,即是判斷是否存在相同學(xué)號,沒有通過鏈表進(jìn)行添加操作,有的話進(jìn)行提示 ,修改時只改對應(yīng)學(xué)號的信息,學(xué)號不需要修改,但需要同時修改成績管理系統(tǒng)中的對應(yīng) 學(xué)號的學(xué)生姓名,在進(jìn)行刪除操作時,先查找是否有和需要修改的學(xué)號相對應(yīng)的學(xué)生信息

38、,有的話則按照鏈表刪除操作進(jìn)行刪除,查找時判斷是否有需要查找的學(xué)號,若有,輸出對應(yīng)的學(xué)生信息,進(jìn)行全刪操作時,和鏈表的釋放操作差不多,但是要注意的是不能釋放頭結(jié)點的地址,它是一個全局變量,釋放后不能進(jìn)行其他操作。在課程數(shù)據(jù)、學(xué)習(xí)成績數(shù)據(jù)的處理時,采取同樣的處理方式;三、學(xué)生成績查詢系統(tǒng)分按學(xué)號、按課程號、按班號三種方式來統(tǒng)計學(xué)生的成績。調(diào)試過程及實驗結(jié)果總結(jié)可以熟練地進(jìn)行文件操作,打開文件,寫文件,向文件中添加內(nèi)容,以及文件的讀取等操作進(jìn)行編寫小型程序。附錄Student文件#include#include#include#include#includeschool.hvoid addstud

39、ent();void displaystudent();void alterstudent();void changename(int no,char name);void findstudent();void deletstudent();void deleallstu();extern StudNode *studenthead;extern ScoreNode *scorehead;void student()int x;doprintf(1-添加,2-修改,3-顯示,4-查找,5-刪除,6-全刪,0-返回n);scanf(%d,&x);switch(x)case 1:addstuden

40、t();break;case 2:alterstudent();break;case 3:displaystudent();break;case 4:findstudent();break;case 5:deletstudent();break;case 6:deleallstu();break;case 0:break;default :printf(選擇錯誤n);break;while(x!=0);void addstudent()/添加一個學(xué)生信息StudNode *p=studenthead-next,*s,*q=studenthead;int no;StudType st;print

41、f(輸入添加的學(xué)生學(xué)號n);scanf(%d,&no);while(p!=NULL & p-data.no!=no)q=p;p=p-next;if(p=NULL)/學(xué)號不重復(fù)s=(StudNode *)malloc(sizeof(StudNode);printf(輸入學(xué)生信息格式:姓名、年齡、班號n);scanf(%s%d%s,,&st.age,st.classno);st.no=no;s-data=st;s-next=q-next;q-next=s;elseprintf(學(xué)號重復(fù)n);void displaystudent()StudNode *p=studenthead-ne

42、xt;if(p!=NULL)printf(學(xué)生信息如下:n);printf(學(xué)號 姓名 年齡 班號n);while(p!=NULL)printf(%3d%8s%5d%8sn,p-data.no,,p-data.age,p-data.classno);p=p-next;printf(學(xué)生信息輸出完畢n);elseprintf(無學(xué)生信息n);void alterstudent()/修改一個學(xué)生的信息,但是學(xué)號不改變,同時改變成績管理文件的姓名StudNode *p=studenthead-next;int no;StudType st;if(p!=NULL)printf(輸

43、入要修改的學(xué)生學(xué)號n);scanf(%d,&no);while(p!=NULL& p-data.no!=no)p=p-next;if(p!=NULL)printf(輸入修改學(xué)生信息,格式:姓名、年齡、班號n);scanf(%s%d%s,,&st.age,st.classno);st.no=no;p-data=st;changename(st.no,);elseprintf(未查到要修改信息的學(xué)生n);void changename(int no,char name)/修改學(xué)生成績管理系統(tǒng)中的名字ScoreNode *p2=scorehead-next;while(p

44、2!=NULL&p2-data.no!=no)p2=p2-next;if(p2!=NULL)strcpy(,name);elseprintf(在成績管理系統(tǒng)中未發(fā)現(xiàn)要修改的學(xué)生資料n);void findstudent()/根據(jù)學(xué)號查找學(xué)生信息并輸出StudNode *p=studenthead;int no;printf(輸入要查找的學(xué)生學(xué)號n);scanf(%d,&no);while(p!=NULL &p-data.no!=no)p=p-next;if(p!=NULL)printf(要查找的學(xué)生信息如下:n);printf(%3d%8s%5d%8sn,p-data.no,,p-data.age,p-data.classno);elseprintf(未找到該學(xué)號的學(xué)生信息n);void deletstudent()/根據(jù)學(xué)號刪除學(xué)生信息StudNode *p=studenthead,*q;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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論