C語言上機(jī)實(shí)驗(yàn)報(bào)告材料_第1頁
C語言上機(jī)實(shí)驗(yàn)報(bào)告材料_第2頁
C語言上機(jī)實(shí)驗(yàn)報(bào)告材料_第3頁
C語言上機(jī)實(shí)驗(yàn)報(bào)告材料_第4頁
C語言上機(jī)實(shí)驗(yàn)報(bào)告材料_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

4、tf("s=%dn",a+b);實(shí)驗(yàn)一 2#include<stdio.h>#include<math.h>void 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 (d<0)printf("無解n");else if (d=0)x1=(-b)/(2*a);printf("一個(gè)解:x=%gn",x1);else x1

5、=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf("兩個(gè)解:x1=%g,x2=%gn",x1,x2);青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件 111實(shí)驗(yàn)日期姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)二 選擇結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康募耙?掌握賦值語句的使用方法。2掌握各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符。3能正確使用關(guān)系運(yùn)算符及表達(dá)式、邏輯運(yùn)算符及表達(dá)式。4熟練掌握if語句,學(xué)會(huì)使用if-else語句設(shè)計(jì)雙分支和多分支結(jié)構(gòu)程序。5熟練掌握switch語句的特點(diǎn),學(xué)會(huì)使用swi

6、tch語句設(shè)計(jì)多分支結(jié)構(gòu)程序。實(shí)驗(yàn)環(huán)境Visual 6.0+ Windows 7實(shí)驗(yàn)內(nèi)容3編寫程序,根據(jù)輸入的學(xué)生成績,給出相應(yīng)的等級(jí)。90分以上的等級(jí)為A,60分以下的等級(jí)為E,其余每10分為一個(gè)等級(jí)。要求分別用if語句和switch語句實(shí)現(xiàn)。4使用switch語句編寫簡單的四則運(yùn)算程序。算法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn) 3 用if 語句時(shí):先輸入學(xué)生成績,判斷等級(jí),然后直接輸出等級(jí)代號(hào)A,B,C,D,E。 用switch 語句時(shí):先輸入學(xué)生成績,除以十,取整。根據(jù)數(shù)值6到9判斷等級(jí)。然后輸出等級(jí)代號(hào)A,B,C,D,E。實(shí)驗(yàn) 4 先定義字符變量c和數(shù)值變量a,b。然后判斷字符變量為何種運(yùn)算符號(hào)。最后輸

7、出相應(yīng)結(jié)果。調(diào)試過程及實(shí)驗(yàn)結(jié)果34總結(jié)掌握了賦值語句的使用方法,各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符、關(guān)系運(yùn)算符及表達(dá)式、邏輯運(yùn)算符及表達(dá)式。 掌握了if語句,學(xué)會(huì)使用if-else語句設(shè)計(jì)雙分支和多分支結(jié)構(gòu)程序;掌握了switch語句的特點(diǎn),學(xué)會(huì)使用switch語句設(shè)計(jì)多分支結(jié)構(gòu)程序附錄實(shí)驗(yàn)二 3用 if 語句:#include<stdio.h>void main()int a;printf("請(qǐng)輸入學(xué)生成績:n");scanf("%d",&a);if (a>90)printf("該學(xué)生成績等級(jí)是 A

8、n");else if (a>80)printf("該學(xué)生成績等級(jí)是 Bn");else if (a>70)printf("該學(xué)生成績等級(jí)是 Cn");else if (a>60)printf("該學(xué)生成績等級(jí)是 Dn");else printf("該學(xué)生成績等級(jí)是 En");用 switch 語句:#include<stdio.h>void main()int a,m;printf("請(qǐng)輸入學(xué)生成績:n");scanf("%d",&a

9、mp;a);m=a/10;switch(m)case 9:printf("該學(xué)生的成績等級(jí)是:An");case 8:printf("該學(xué)生的成績等級(jí)是:Bn");case 7:printf("該學(xué)生的成績等級(jí)是:Cn");case 6:printf("該學(xué)生的成績等級(jí)是:Dn");default:printf("該學(xué)生的成績等級(jí)是:En");實(shí)驗(yàn)二 4#include<stdio.h>void main()float a,b;char c;scanf("%f%c%f&qu

10、ot;,&a,&c,&b);switch(c)case '+':printf("%fn",a+b);break;case '-':printf("%fn",a-b);break;case '*':printf("%fn",a*b);break;case '/':printf("%fn",a/b);break;青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2012-5-2姓名趙亞東學(xué)號(hào)201

11、107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)三 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康募耙?熟練掌握while、do-while、for語句的特點(diǎn),學(xué)會(huì)設(shè)計(jì)循環(huán)結(jié)構(gòu)程序。2掌握break語句以及continue語句的特點(diǎn)及使用范圍。3學(xué)會(huì)編寫循環(huán)嵌套程序。3結(jié)合程序掌握一些簡單的算法。4進(jìn)一步學(xué)習(xí)調(diào)試程序。實(shí)驗(yàn)環(huán)境Visual 6.0+ Windows 7實(shí)驗(yàn)內(nèi)容4編程練習(xí)。求 的部分和。直到最后一項(xiàng)的值小于1.0e-4。 提示:第 n 項(xiàng) un=xn/n!, 第 n+1 項(xiàng) un+1= xn+1/(n+1)! 及 un+1 = un(x/(n+1)5編程練習(xí)。有1、2、3、4四個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)

12、字的三位數(shù)?分別是多少?算法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn)四1、調(diào)用<math,h>函數(shù)。2、定義x s i j。輸入x。3、直到n大于10000。4、i=i*(x/(j+1); s=s+i; 5、輸出s實(shí)驗(yàn)五 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&&k!=j),輸出i*100+j*10+k。4、最后輸出("總數(shù)為:%dn",fre) 調(diào)試過程及實(shí)驗(yàn)結(jié)果3、4、總結(jié)(對(duì)實(shí)驗(yàn)結(jié)果

13、進(jìn)行分析,問題回答,實(shí)驗(yàn)心得體會(huì)及改進(jìn)意見)附錄實(shí)驗(yàn)三 3#include<stdio.h>#include<math.h>void 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);實(shí)驗(yàn)三 4#include <stdio.h>void main()int i,j,k,fre=0;for(i=1;i<=4;i+)for(j=1;j

14、<=4;j+)for(k=1;k<=4;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í)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2012-5-2姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)四 數(shù)組程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康募耙?.掌握一維數(shù)組、二維數(shù)組的定義、引用及其存儲(chǔ)方式。2.掌握字符數(shù)組、字符串以及字符

15、串?dāng)?shù)組的含義及區(qū)別。3.掌握常用字符函數(shù)及字符串函數(shù)的使用。4.掌握常用數(shù)組的排序、查找等算法。實(shí)驗(yàn)環(huán)境Visual C+6.0 Windows XP實(shí)驗(yàn)內(nèi)容2編寫程序,定義一個(gè)含有30個(gè)元素的int類型數(shù)組.依次給數(shù)組元素賦奇數(shù)1、3、5、7;然后按每行十個(gè)數(shù)順序輸出,最后再按每行十個(gè)數(shù)逆序輸出。3已知數(shù)組中的值在0-9的范圍內(nèi),統(tǒng)計(jì)每個(gè)整數(shù)的個(gè)數(shù)。算 法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn)2 1、定義一個(gè)一維數(shù)組a30,i,j=1。2、利用for循環(huán)輸出,ai+1=ai+2;printf("%6d",ai)。 3、輸出數(shù)組,定義初始值1或者59。確定順、逆序。實(shí)驗(yàn) 3 1、定義一個(gè)一維隨

16、機(jī)數(shù)組含20個(gè)數(shù)。2、輸出該一維數(shù)組。 3、利用for循環(huán)int m,n,k; for(m=0;m<=9;m+) for(n=0;n<20;n+) if(m=an)。4、輸出每個(gè)數(shù)各有幾個(gè)。調(diào)試過程及實(shí)驗(yàn)結(jié)果 2、3、總結(jié)掌握常用字符函數(shù)及字符串函數(shù)的使用,掌握常用數(shù)組的排序、查找等算法。附錄實(shí)驗(yàn)2#include<stdio.h>void main()int a30,i,j=1;for(i=1;i<31;i+)a1=1;ai+1=ai+2;printf("%6d",ai);if(i%10=0)printf("n");pri

17、ntf("n");for(i=1;i<31;i+)a1=59;ai+1=ai-2;printf("%6d",ai);if(i%10=0)printf("n");實(shí)驗(yàn)4#include<stdio.h>#include<stdlib.h>void main()int i,a20;for(i=0;i<20;i+)ai=rand()%10;printf("%3d",ai);printf("n");int m,n,k;for(m=0;m<=9;m+)k=0;fo

18、r(n=0;n<20;n+)if(m=an)k+;printf("%d有%d個(gè)n",m,k);青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2012-5-7姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)五 函數(shù)實(shí)驗(yàn)?zāi)康募耙?掌握函數(shù)定義的各個(gè)要素。如函數(shù)返回值的類型、形式參數(shù)與實(shí)際參數(shù)等。2掌握變量的作用域和生存期的概念。3掌握局部變量與全局變量的區(qū)別、靜態(tài)局部變量和局部變量的區(qū)別、靜態(tài)全局變量和全局變量的區(qū)別;理解外部變量和外部函數(shù)的概念。4理解數(shù)組作為函數(shù)的參數(shù)的含義。5理解函數(shù)的嵌套調(diào)用。6掌握函數(shù)的遞歸調(diào)用。實(shí)驗(yàn)

19、環(huán)境Visual C+6.0 window7實(shí)驗(yàn)內(nèi)容3求100200之間的素?cái)?shù)。要求:每行10個(gè)數(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),編程實(shí)現(xiàn)輸入x的值,計(jì)算輸出q(x)的值,要求有q(x)和f(x)的定義。5求菲波那契數(shù)列1,1,2,3,5,8,13,21,34的前20項(xiàng)。要求:使用遞歸;每行輸出5個(gè)數(shù)。算法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn)3 1、定義函數(shù) isprime(int n)。2、當(dāng)(n%i=0)時(shí),返回0.否則返回1。3、定義main函數(shù)

20、。確定范圍100200. 4、當(dāng)isprime函數(shù)成立,每五個(gè)一行輸出。實(shí)驗(yàn) 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ù)。實(shí)驗(yàn) 5 1、定義fib函數(shù)。前兩項(xiàng)為1.2、利用遞歸函。Fib(x)= fib(x-1)+fib(x-2);。3、每五項(xiàng)一行輸出。調(diào)試過程及實(shí)驗(yàn)結(jié)果3、4、5、總結(jié)1,掌握了函數(shù)定義的各個(gè)要素。2,如函數(shù)返回值的類型、形式參數(shù)與實(shí)際參數(shù)等.3,需要進(jìn)一步掌握函數(shù)。附錄實(shí)驗(yàn) 3#includ

21、e<stdio.h>int isprime(int n)int i;for(i=2;i<n;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");實(shí)驗(yàn) 4#include<stdio.h>#include<math.h>double f(float x)double c;c=(2*

22、pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);return 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);實(shí)驗(yàn) 5#include<stdio.h>int fib(int x)if(x=1|x=2)return 1;elsereturn fib(x-1)+fib(x-2);ma

23、in()int n,s;for(n=1;n<=20;n+)s=fib(n);printf("%-5d",s);if(n%5=0)printf("n");printf("%n");青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2012-5-16姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)六 指針實(shí)驗(yàn)?zāi)康募耙?.理解指針的定義,學(xué)會(huì)指針變量的初始化以及指針可以參與的運(yùn)算。2.掌握指針和一維數(shù)組的關(guān)系。3.理解指針和二維數(shù)組的關(guān)系、理解行指針(或數(shù)組指針)的概念。4.理解指針數(shù)組和數(shù)組

24、指針的區(qū)別。5.理解指針和函數(shù)的關(guān)系以及指針函數(shù)和函數(shù)指針的含義。6.了解指針的指針(即二級(jí)指針)。實(shí)驗(yàn)環(huán)境Visual C+6.0 window7實(shí)驗(yàn)內(nèi)容6編寫程序。讀入三個(gè)浮點(diǎn)數(shù),將整數(shù)部分和小數(shù)部分分別輸出。要求使用指針作形參。7編寫一個(gè)函數(shù),返回?cái)?shù)組元素中最大值的地址,并在主函數(shù)中輸出該元素。算法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn)6 1、定義函數(shù),指針做形參。2、定義a為整數(shù)部分,*p-a既是小數(shù)部分。然后輸出。3、主函數(shù)中,鍵入三個(gè)浮點(diǎn)型數(shù)。并使用fu函數(shù)。實(shí)驗(yàn)71、定義dizhi函數(shù),指針做形參。返回地址。2、定義主函數(shù),以及一個(gè)數(shù)組。3、調(diào)用dizhi函數(shù),輸出數(shù)組和最大值。調(diào)試過程及實(shí)驗(yàn)結(jié)果6

25、、7、總結(jié)1.運(yùn)用指針時(shí)應(yīng)時(shí)刻注意指針指向的改變,避免邏輯上的錯(cuò)誤,加大編程時(shí)的難度。2.通過指針變量可以提高程序質(zhì)量,編寫程序方便靈活,可以實(shí)現(xiàn)多個(gè)值的返回附錄實(shí)驗(yàn)6#include<stdio.h>void fu(float *p)int a;a=(int)*p;printf("整數(shù)部分是%d 小數(shù)部分是%fn",a,*p-a);main()float a3;int i;for(i=0;i<3;i+)scanf("%f",&ai);fu(&ai); 實(shí)驗(yàn)7#include<stdio.h>int dizh

26、i(int *p)int s;p=&s;printf("地址是:%dn",p);return p;main()int i,s,a10,*p;for(i=0;i<10;i+) ai=rand()%10;printf("%d ",ai);printf("n");s=a0;for(i=0;i<10;i+)if(s<ai+1)s=ai;printf("最大數(shù)是;%dn",s);dizhi(&s);青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2012

27、-5-16姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱指針實(shí)驗(yàn)?zāi)康募耙?.理解指針的定義,學(xué)會(huì)指針變量的初始化以及指針可以參與的運(yùn)算。2.掌握指針和一維數(shù)組的關(guān)系。3.理解指針和二維數(shù)組的關(guān)系、理解行指針(或數(shù)組指針)的概念。4.理解指針數(shù)組和數(shù)組指針的區(qū)別。5.理解指針和函數(shù)的關(guān)系以及指針函數(shù)和函數(shù)指針的含義。6.了解指針的指針(即二級(jí)指針)。實(shí)驗(yàn)環(huán)境Visual C+6.0 window7實(shí)驗(yàn)內(nèi)容6編寫程序。讀入三個(gè)浮點(diǎn)數(shù),將整數(shù)部分和小數(shù)部分分別輸出。要求使用指針作形參。7編寫一個(gè)函數(shù),返回?cái)?shù)組元素中最大值的地址,并在主函數(shù)中輸出該元素。算法描述及實(shí)驗(yàn)步驟實(shí)驗(yàn)6 1、定義函數(shù),指針

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

29、t;,a,*p-a);main()float a3;int i;for(i=0;i<3;i+)scanf("%f",&ai);fu(&ai); 實(shí)驗(yàn)7#include<stdio.h>int dizhi(int *p)int s;p=&s;printf("地址是:%dn",p);return p;main()int i,s,a10,*p;for(i=0;i<10;i+) ai=rand()%10;printf("%d ",ai);printf("n");s=a0;fo

30、r(i=0;i<10;i+)if(s<ai+1)s=ai;printf("最大數(shù)是;%dn",s);dizhi(&s);青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱計(jì)算機(jī)程序設(shè)計(jì) (C)班級(jí)軟件111實(shí)驗(yàn)日期2011-5-30姓名趙亞東學(xué)號(hào)201107209實(shí)驗(yàn)成績實(shí)驗(yàn)名稱實(shí)驗(yàn)七 鏈表實(shí)驗(yàn)?zāi)康募耙?掌握結(jié)構(gòu)體類型變量的定義和使用。2掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用。3掌握鏈表的概念,初步學(xué)會(huì)對(duì)鏈表進(jìn)行操作。實(shí)驗(yàn)環(huán)境VC+6.0實(shí)驗(yàn)內(nèi)容1編寫程序。有5個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、姓名、3門課的成績,從鍵盤輸入5個(gè)學(xué)生數(shù)據(jù),要求輸出3門課總平均成績,以及最

31、高分的學(xué)生的數(shù)據(jù)(包括學(xué)號(hào)、姓名、3門課的成績、平均分?jǐn)?shù))。2建立一個(gè)學(xué)生鏈表,每個(gè)結(jié)點(diǎn)包括:學(xué)號(hào)、姓名、性別、年齡。輸入一個(gè)年齡,如果鏈表中的結(jié)點(diǎn)所包含的年齡等于此年齡,則將此結(jié)點(diǎn)刪去。算法描述及實(shí)驗(yàn)步驟第一題定義一個(gè)結(jié)構(gòu)體變量,包含學(xué)號(hào)、姓名、3門課的成績定義一個(gè)可以輸入學(xué)生信息的函數(shù)。定義一個(gè)函數(shù)可以求平均分并返回。輸出3門課總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號(hào)、姓名、3門課的成績、平均分?jǐn)?shù))。第二題定義一個(gè)結(jié)構(gòu)體變量,包括學(xué)號(hào)、姓名、性別、年齡和指向下一個(gè)節(jié)點(diǎn)的指針。創(chuàng)建鏈表,輸入學(xué)生信息。定義一個(gè)可以輸出學(xué)生信息函數(shù)。定義一個(gè)可以刪除節(jié)點(diǎn)的函數(shù),當(dāng)輸入一個(gè)年齡時(shí),如果鏈表中的

32、結(jié)點(diǎn)所包含的年齡等于此年齡,則將此結(jié)點(diǎn)刪去。調(diào)試過程及實(shí)驗(yàn)結(jié)果12 總結(jié)熟練地掌握共用體;在寫程序時(shí)可以熟練地使用鏈表進(jìn)行數(shù)據(jù)操作。附錄/第一題代碼如下:#include<stdio.h>#define N 5void 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

33、;double degree1;double degree2;double degree3;void main()struct student studN;double aver3,avg;int a,i;input(stud);aver0=av1(stud);aver1=av2(stud);aver2=av3(stud);a=max(stud);avg=(studa.degree1+studa.degree2+studa.degree3)/3.0;for(i=0;i<3;i+) printf("第%d門平均分:t",i+1);printf("%.2lfn&

34、quot;,averi);printf("分?jǐn)?shù)最高的學(xué)生信息如下:n");printf("%dt%st%.2lf %.2lf %.2lf %.2lfn",studa.no,,studa.degree1,studa.degree2,studa.degree3,avg);void input(struct student stud)/輸入N個(gè)學(xué)生的信息int i;printf("學(xué)生信息輸入格式:學(xué)號(hào)、姓名 、分開輸入三門分?jǐn)?shù)n");for(i=0;i<N;i+)printf("輸入第%d個(gè)學(xué)生信息:n

35、",i+1);scanf("%d%s%lf%lf%lf",&studi.no,,&studi.degree1,&studi.degree2,&studi.degree3);double av1(struct student stud)/計(jì)算第一門課的平均分int i;double a=0.0,b;for(i=0;i<N;i+)a+=studi.degree1;b=a/N;return b;double av2(struct student stud)/計(jì)算第二門課的平均分int i;double a=0.0

36、,b;for(i=0;i<N;i+)a+=studi.degree2;b=a/N;return b;double av3(struct student stud)/計(jì)算第三門課的平均分int i;double a=0.0,b;for(i=0;i<N;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=0;i<N;i+)ai=studi.degree1+studi.degree2+studi.degree3;if(m<

37、;ai)m=ai;k=i;return k;/ 第二題代碼如下:#include<stdio.h>#include<malloc.h>#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(Stud *head);void main()/主函數(shù)

38、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)建鏈表儲(chǔ)存學(xué)生信息Stud *p,*head,*r;int i;head=(Stud *)malloc(sizeof(Stud);r=head;pr

39、intf("輸入學(xué)生信息格式:學(xué)號(hào)、姓名、性別、年齡n");for(i=1;i<=N;i+)p=(Stud *)malloc(sizeof(Stud);printf("輸入第%d個(gè)學(xué)生信息n",i);scanf("%d%s%s%d",&p->no,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->n

40、ext;printf("學(xué)生信息如下:n");while(p!=NULL)printf("第%d個(gè)學(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;Stud *p=head;if(n<1)return NULL;while(p!=NULL&&i<n)p=p->next;i+;if(p!=NU

41、LL)return p;elsereturn NULL;void delet(Stud *head)/刪除與輸入年齡相同的學(xué)生信息int year,i=1,k=1;Stud *p=head->next,*q;printf("輸入要?jiǎng)h除的年齡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->next;free(p)

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

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

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

45、e<malloc.h>#include<string.h>#include"school.h"void addstudent();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;dop

46、rintf("1-添加,2-修改,3-顯示,4-查找,5-刪除,6-全刪,0-返回n");scanf("%d",&x);switch(x)case 1:addstudent();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("選擇錯(cuò)誤n&q

47、uot;);break;while(x!=0);void addstudent()/添加一個(gè)學(xué)生信息StudNode *p=studenthead->next,*s,*q=studenthead;int no;StudType st;printf("輸入添加的學(xué)生學(xué)號(hào)n");scanf("%d",&no);while(p!=NULL && p->data.no!=no)q=p;p=p->next;if(p=NULL)/學(xué)號(hào)不重復(fù)s=(StudNode *)malloc(sizeof(StudNode);print

48、f("輸入學(xué)生信息格式:姓名、年齡、班號(hào)n");scanf("%s%d%s",,&st.age,st.classno);st.no=no;s->data=st;s->next=q->next;q->next=s;elseprintf("學(xué)號(hào)重復(fù)n");void displaystudent()StudNode *p=studenthead->next;if(p!=NULL)printf("學(xué)生信息如下:n");printf("學(xué)號(hào) 姓名 年齡 班號(hào)n&q

49、uot;);while(p!=NULL)printf("%3d%8s%5d%8sn",p->data.no,p->,p->data.age,p->data.classno);p=p->next;printf("學(xué)生信息輸出完畢n");elseprintf("無學(xué)生信息n");void alterstudent()/修改一個(gè)學(xué)生的信息,但是學(xué)號(hào)不改變,同時(shí)改變成績管理文件的姓名StudNode *p=studenthead->next;int no;StudType st;if(p!

50、=NULL)printf("輸入要修改的學(xué)生學(xué)號(hào)n");scanf("%d",&no);while(p!=NULL&& p->data.no!=no)p=p->next;if(p!=NULL)printf("輸入修改學(xué)生信息,格式:姓名、年齡、班號(hào)n");scanf("%s%d%s",,&st.age,st.classno);st.no=no;p->data=st;changename(st.no,);elseprintf("未

51、查到要修改信息的學(xué)生n");void changename(int no,char name)/修改學(xué)生成績管理系統(tǒng)中的名字ScoreNode *p2=scorehead->next;while(p2!=NULL&&p2->data.no!=no)p2=p2->next;if(p2!=NULL)strcpy(p2->,name);elseprintf("在成績管理系統(tǒng)中未發(fā)現(xiàn)要修改的學(xué)生資料n");void findstudent()/根據(jù)學(xué)號(hào)查找學(xué)生信息并輸出StudNode *p=studenthead

52、;int no;printf("輸入要查找的學(xué)生學(xué)號(hào)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->,p->data.age,p->data.classno);elseprintf("未找到該學(xué)號(hào)的學(xué)生信息n");void deletstudent()/根據(jù)學(xué)號(hào)刪除學(xué)生信息StudNode *p=studenthead,*q;int no;printf("輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)n");scanf("%d",&no);while(p!=NULL &&p->data.no!=no)q=p;p=p->next;if(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論