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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、tf("s=%dn",a+b);實驗一 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("一個解:x=%gn",x1);else x1

5、=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf("兩個解:x1=%g,x2=%gn",x1,x2);青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件 111實驗日期姓名趙亞東學號201107209實驗成績實驗名稱實驗二 選擇結構程序設計實驗目的及要求1掌握賦值語句的使用方法。2掌握各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉換符。3能正確使用關系運算符及表達式、邏輯運算符及表達式。4熟練掌握if語句,學會使用if-else語句設計雙分支和多分支結構程序。5熟練掌握switch語句的特點,學會使用swi

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

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

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

9、mp;a);m=a/10;switch(m)case 9:printf("該學生的成績等級是:An");case 8:printf("該學生的成績等級是:Bn");case 7:printf("該學生的成績等級是:Cn");case 6:printf("該學生的成績等級是:Dn");default:printf("該學生的成績等級是:En");實驗二 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;青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2012-5-2姓名趙亞東學號201

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

12、字的三位數(shù)?分別是多少?算法描述及實驗步驟實驗四1、調用<math,h>函數(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&&k!=j),輸出i*100+j*10+k。4、最后輸出("總數(shù)為:%dn",fre) 調試過程及實驗結果3、4、總結(對實驗結果

13、進行分析,問題回答,實驗心得體會及改進意見)附錄實驗三 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);實驗三 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);青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2012-5-2姓名趙亞東學號201107209實驗成績實驗名稱實驗四 數(shù)組程序設計實驗目的及要求1.掌握一維數(shù)組、二維數(shù)組的定義、引用及其存儲方式。2.掌握字符數(shù)組、字符串以及字符

15、串數(shù)組的含義及區(qū)別。3.掌握常用字符函數(shù)及字符串函數(shù)的使用。4.掌握常用數(shù)組的排序、查找等算法。實驗環(huán)境Visual C+6.0 Windows XP實驗內容2編寫程序,定義一個含有30個元素的int類型數(shù)組.依次給數(shù)組元素賦奇數(shù)1、3、5、7;然后按每行十個數(shù)順序輸出,最后再按每行十個數(shù)逆序輸出。3已知數(shù)組中的值在0-9的范圍內,統(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、定義一個一維隨

16、機數(shù)組含20個數(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、輸出每個數(shù)各有幾個。調試過程及實驗結果 2、3、總結掌握常用字符函數(shù)及字符串函數(shù)的使用,掌握常用數(shù)組的排序、查找等算法。附錄實驗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");實驗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個n",m,k);青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2012-5-7姓名趙亞東學號201107209實驗成績實驗名稱實驗五 函數(shù)實驗目的及要求1掌握函數(shù)定義的各個要素。如函數(shù)返回值的類型、形式參數(shù)與實際參數(shù)等。2掌握變量的作用域和生存期的概念。3掌握局部變量與全局變量的區(qū)別、靜態(tài)局部變量和局部變量的區(qū)別、靜態(tài)全局變量和全局變量的區(qū)別;理解外部變量和外部函數(shù)的概念。4理解數(shù)組作為函數(shù)的參數(shù)的含義。5理解函數(shù)的嵌套調用。6掌握函數(shù)的遞歸調用。實驗

19、環(huán)境Visual C+6.0 window7實驗內容3求100200之間的素數(shù)。要求:每行10個數(shù)輸出;定義子函數(shù)isprime,函數(shù)原型為 int isprime( int n);4設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(int n)。2、當(n%i=0)時,返回0.否則返回1。3、定義main函數(shù)

20、。確定范圍100200. 4、當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、每五項一行輸出。調試過程及實驗結果3、4、5、總結1,掌握了函數(shù)定義的各個要素。2,如函數(shù)返回值的類型、形式參數(shù)與實際參數(shù)等.3,需要進一步掌握函數(shù)。附錄實驗 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");實驗 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);實驗 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");青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2012-5-16姓名趙亞東學號201107209實驗成績實驗名稱實驗六 指針實驗目的及要求1.理解指針的定義,學會指針變量的初始化以及指針可以參與的運算。2.掌握指針和一維數(shù)組的關系。3.理解指針和二維數(shù)組的關系、理解行指針(或數(shù)組指針)的概念。4.理解指針數(shù)組和數(shù)組

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

25、、7、總結1.運用指針時應時刻注意指針指向的改變,避免邏輯上的錯誤,加大編程時的難度。2.通過指針變量可以提高程序質量,編寫程序方便靈活,可以實現(xià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); 實驗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);青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2012

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

28、做形參。2、定義a為整數(shù)部分,*p-a既是小數(shù)部分。然后輸出。3、主函數(shù)中,鍵入三個浮點型數(shù)。并使用fu函數(shù)。實驗71、定義dizhi函數(shù),指針做形參。返回地址。2、定義主函數(shù),以及一個數(shù)組。3、調用dizhi函數(shù),輸出數(shù)組和最大值。調試過程及實驗結果6、7、總結1.運用指針時應時刻注意指針指向的改變,避免邏輯上的錯誤,加大編程時的難度。2.通過指針變量可以提高程序質量,編寫程序方便靈活,可以實現(xià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); 實驗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);青 島 理 工 大 學課程實驗報告課程名稱計算機程序設計 (C)班級軟件111實驗日期2011-5-30姓名趙亞東學號201107209實驗成績實驗名稱實驗七 鏈表實驗目的及要求1掌握結構體類型變量的定義和使用。2掌握結構體類型數(shù)組的概念和應用。3掌握鏈表的概念,初步學會對鏈表進行操作。實驗環(huán)境VC+6.0實驗內容1編寫程序。有5個學生,每個學生的數(shù)據(jù)包括學號、姓名、3門課的成績,從鍵盤輸入5個學生數(shù)據(jù),要求輸出3門課總平均成績,以及最

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

32、結點所包含的年齡等于此年齡,則將此結點刪去。調試過程及實驗結果12 總結熟練地掌握共用體;在寫程序時可以熟練地使用鏈表進行數(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("分數(shù)最高的學生信息如下:n");printf("%dt%st%.2lf %.2lf %.2lf %.2lfn",studa.no,,studa.degree1,studa.degree2,studa.degree3,avg);void input(struct student stud)/輸入N個學生的信息int i;printf("學生信息輸入格式:學號、姓名 、分開輸入三門分數(shù)n");for(i=0;i<N;i+)printf("輸入第%d個學生信息:n

35、",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;i<N;i+)a+=studi.degree1;b=a/N;return b;double av2(struct student stud)/計算第二門課的平均分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)/計算第三門課的平均分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)/查找分數(shù)最大的學生下標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)建鏈表儲存學生信息Stud *p,*head,*r;int i;head=(Stud *)malloc(sizeof(Stud);r=head;pr

39、intf("輸入學生信息格式:學號、姓名、性別、年齡n");for(i=1;i<=N;i+)p=(Stud *)malloc(sizeof(Stud);printf("輸入第%d個學生信息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)/顯示學生信息int i=0;Stud *p=head->n

40、ext;printf("學生信息如下:n");while(p!=NULL)printf("第%d個學生信息: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)/刪除與輸入年齡相同的學生信息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->next;free(p)

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

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

44、應的學生信息,有的話則按照鏈表刪除操作進行刪除,查找時判斷是否有需要查找的學號,若有,輸出對應的學生信息,進行全刪操作時,和鏈表的釋放操作差不多,但是要注意的是不能釋放頭結點的地址,它是一個全局變量,釋放后不能進行其他操作。在課程數(shù)據(jù)、學習成績數(shù)據(jù)的處理時,采取同樣的處理方式;三、學生成績查詢系統(tǒng)分按學號、按課程號、按班號三種方式來統(tǒng)計學生的成績。調試過程及實驗結果總結可以熟練地進行文件操作,打開文件,寫文件,向文件中添加內容,以及文件的讀取等操作進行編寫小型程序。附錄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("選擇錯誤n&q

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

48、f("輸入學生信息格式:姓名、年齡、班號n");scanf("%s%d%s",,&st.age,st.classno);st.no=no;s->data=st;s->next=q->next;q->next=s;elseprintf("學號重復n");void displaystudent()StudNode *p=studenthead->next;if(p!=NULL)printf("學生信息如下:n");printf("學號 姓名 年齡 班號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("學生信息輸出完畢n");elseprintf("無學生信息n");void alterstudent()/修改一個學生的信息,但是學號不改變,同時改變成績管理文件的姓名StudNode *p=studenthead->next;int no;StudType st;if(p!

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

51、查到要修改信息的學生n");void changename(int no,char name)/修改學生成績管理系統(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)要修改的學生資料n");void findstudent()/根據(jù)學號查找學生信息并輸出StudNode *p=studenthead

52、;int no;printf("輸入要查找的學生學號n");scanf("%d",&no);while(p!=NULL &&p->data.no!=no)p=p->next;if(p!=NULL)printf("要查找的學生信息如下:n");printf("%3d%8s%5d%8sn",p->data.no,p->,p->data.age,p->data.classno);elseprintf("未找到該學號的學生信息n");void deletstudent()/根據(jù)學號刪除學生信息StudNode *p=studenthead,*q;int no;printf("輸入要刪除的學生學號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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論