高級程序語言程序設計實驗報告_第1頁
高級程序語言程序設計實驗報告_第2頁
高級程序語言程序設計實驗報告_第3頁
高級程序語言程序設計實驗報告_第4頁
高級程序語言程序設計實驗報告_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、高級語言程序設計課程設計 高級語言程序設計課程設計題目:多重模塊管理專 業 計算機 班 級 1306班 學 生 林道松 學 號 3131903609 指導教師 鮑春波 /肖琳 起止時間 2014-2-172014-2-21 2014年 2月35目錄A組題目1系統分析30系統設計30系統實現31運行測試31心得體會34參考文獻34A組題目題目1: 寫一個函數計算下列函數的值f(0),f(3),f(-3),測試之。函數如下: 解:#includeint main()int f(int n); int num,result; printf(input the x : ); scanf(%d,&num

2、); result=f(num); printf(the result is %dn,result);int f(int n) int s; if(n0) s=3*n*n-4; if(n=0) s=2; if(n0) s=0; return s;評析:這是一個簡單的選擇判斷結構,只需將條件編寫清楚即可。題目2:寫一個函數void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一組數據的最大值、最小值和平均值,測試之。其中data指向給定數據的數組的指針,max、min、ave分別指向最大值、最小值和平均值,si

3、ze是數組的大小。要求第一個實參是數組,第2、3、4個實參都是對普通的簡單變量的某種操作,最后一個實參是數組的大小。測試之解:#include#includevoid maxMinAver(int *data,int *max, int *min,float * ave,int size);int main() int n,i; int max,min; float ave; int *data; printf(please enter the numbers:n); scanf(%d,&n); data=(int*)malloc(n*sizeof(int); for(i=0;in;i+) s

4、canf(%d,&datai); maxMinAver(data,&max,&min,&ave,n); printf(max:%dnmin:%dnave:%.1fn,max,min,ave); return 0;void maxMinAver(int *data,int *max, int *min,float * ave,int size) int i,sum=0; *max=data0; *min=data0; for(i=0;isize;i+) if(*max=datai) *min=datai; sum+=datai; *ave=(float)sum/size;評析:這是一個以指針為參

5、數的函數,用冒泡法對數組中的每一個數進行比較,這道題目的需要注意的地方就是在函數的調用需注意函數實參,以及對數組內存空間的申請。題目3:寫一個函數用指針型字符串實現兩個字符串比較,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,測試之解:#includeint mystrcmp(const char *str1, const char *str2);int main() char str1100,str2100; scanf(%s %s,str1,str2); printf(%dn,mystrcmp(s

6、tr1,str2); return 0;int mystrcmp(const char *str1, const char *str2) int i; for(i=0;*(str1+i) != 0 & *(str2+i) !=0;i+) if(*(str1+i) *(str2+i) return 1; if(*(str1+i) *(str2+i) return -1; if(*(str1+i) =*(str2+i) return 0; 評析:這道題的比較方法是將字母一一進行對比,利用指針將字母一個個進行比較,需要注意的地方就是取*運算。題目4:定義一個學生結構體,取別名STU,包含學號、姓名、

7、數學、語文、計算機、英語等 課程成績,還有總分和平均分,寫一個函數實現求一組學生每個學生各門課程的平均值,函數原型為float ave(STU stu,int size)。測試之。解:#include#include#define SIZE 2typedef struct student int num; char name10; float math; float english; float computer; float chinese; float total; float average;STU;STU stuSIZE;float ave(STU stu,int size);int

8、main() int i; printf(please input the studets information:n); for(i=0;iSIZE;i+) scanf(%d %s %f %f %f %f,&stui.num,, &stui.math,&stui.english,&puter,&stui.chinese); ave(stu,SIZE); for(i=0;iSIZE;i+) printf(num:%dnname:%snaverage:%.2fnn, stui.num,,stui.average); return 0;float

9、 ave(STU stu,int size) int i; for(i=0;isize;i+) stui.total=stui.math+stui.english+puter+stui.chinese; stui.average=stui.total/4; 評析:這是一個用結構體數組進行信息保存管理的函數,需要注意到的地方是在輸入信息與打印信息時要將注意結構體數組的名稱題目5 :寫一個函數能夠從文件讀入一組學生STU的信息,保存到一個結構體數組中。解:#include#include#define SIZE 10struct student_type char name 10;

10、 int num; int age; char addr15;studSIZE;void load();int main () load(); return 0;void load() int i; FILE*fp; if(fp=fopen(stu.txt,r)=NULL) printf(cannot open filen); exit (0); for(i=0;iSIZE;i+) fscanf(fp,%s %d %d %s,&, &studi.num,&studi.age,&studi.addr); printf(%-10s %4d %4d %-15sn,studi.na

11、me, studi.num,studi.age,studi.addr); fclose (fp);評析:這是一個典型的從文件中輸入信息保存在數組中在屏幕上打印出。需要注意的打開文件所需要的頭文件以及數據輸入輸出的格式。題目6 :寫一個函數能夠輸出某一學生結構體數組STU stu10的信息和每個人的總分、平均分到某一文本文件中,測試之。輸出格式是: “%s %s %d %d %d %d %d %5.2f” 解:#include#include#define SIZE 10struct student_type char name 10; char addr15; int grade; int n

12、um; int height; int age; int score; float ave;stuSIZE;void output();int main () output(); return 0;void output() int i; FILE*fp; fp=fopen(printf.txt,w); for(i=0;iSIZE;i+) scanf(%s %s %d %d %d %d %d %f, ,stui.addr,&stui.grade,&stui.num, &stui.height,&stui.age,&stui.score,&stui.ave); fprintf(

13、fp,%s %s %d %d %d %d %d %5.2fn, ,stui.addr,stui.grade,stui.num, stui.height,stui.age,stui.score,stui.ave); 評析:注意文件的輸入及輸出格式即可。題目7: 寫一個函數能夠打印輸出學生結構體數組STU stu10的信息到屏幕上,測試之解:#include#define SIZE 10struct student int num; char name10; float score;stuSIZE;void print(struct student stu,int size);i

14、nt main () int n; for(n=0;nSIZE;n+) scanf(%d %s %f,&stun.num,,&stun.score); print(stu,SIZE); return 0;void print(struct student stu,int size) int i; for(i=0;isize;i+) printf(num:%dnname:%snscore:%.2fnn,stui.num,,stui.score);評析:注意函數的調用和輸入和輸出的格式。題目8 :寫一個函數能夠把一組學生成績信息按總分進行排序,測試之。解:#in

15、clude#define SIZE 2struct student int num; char name10; float score;STUSIZE;void comp(struct student stu);int main() int n; for(n=0;nSIZE;n+) scanf(%d %s %f,&STUn.num,STU,&STUn.score); printf(The Order Is:n); comp(STU); for(n=0;nSIZE;n+) printf(%6d%10s%8.1fn,STUn.num,STU,STUn.score); ret

16、urn 0;void comp(struct student stu) int i,j,k,m; for(i=0;iSIZE-1;i+) k=i; for(j=i+1;jSTUk.score) k=j; m=STUk.score; STUk.score=STUi.score; STUi.score=m; 評析:應用選擇法對學生信息進行比較,注意結構體數組信息的格式。題目9 :寫一個函數能夠查找給定學號的學生成績信息,如果找到打印成績信息,如果沒有,顯示“not found!”.測試之。解:#includestruct student int num; char name15; int chin

17、ese; int math; int english;void searchscore(struct student stu);int main() struct student stu5=10110,zhang,70,80,90,10111,lin,90,80,90, 10086,zhao,70,80,90,10010,zhang,70,70,70,10120,chen,80,80,90; searchscore(stu); return 0;void searchscore(struct student stu) int n,m,number=0; printf(enter the num

18、ber you want:n); scanf(%d,&m); printf(The Result Is:n); for(n=0;n5;n+) if(m=stun.num) printf(num:%dnname:%snchinese:%dnmath:%dnenglish:%dn,stun.num,, stun.chinese,stun.math,stun.english); number=1; if(number=0) printf(not found!n);評析;這是一個信息搜索程序,學生的信息可以是事先定義,也可以采用用戶輸入形式。題目10 : 設計一個界面函數,包含上述1

19、1個題目的調用,即 請選擇1 調用第一個函數(具體的函數名)2 調用第二個函數(具體的函數名)3 . . 9 調用第9個函數(具體的函數名) 繼續嗎?輸入y繼續下一次選擇,輸入n結束 解: #include#include#include#define SIZE 10int f();void maxMinAver();int mystrcmp();float ave();typedef struct student int num; char name10; float math; float english; float computer; float chinese; float tota

20、l; float average;STU;STU stuSIZE;void load();struct student_type char name 10; int num; int age; char addr15;studSIZE;void output();struct Student_type char name 10; char addr15; int grade; int num; int height; int age; int score; float ave;StuSIZE;void print();struct sTudent int num; char name10; f

21、loat score;sTuSIZE;void comp();struct studenT int num; char name10; float score;StUSIZE;void searchscore();struct stuDent int num; char name15; int chinese; int math; int english;int sw(int m);void menu();int main() int num1,num2; char str; menu(); scanf(%d,&num1); sw(num1); getchar(); scanf(%c,&str

22、); while (str=N|str=n&str=Y|str=y) if(str=y) scanf(%d,&num2); sw(num2); if(str=n) break; getchar(); scanf(%c,&str); return 0;int sw(int m) int x,n,i,max,min; char str1100,str2100; float kave; int *data; struct stuDent stuD5=10110,zhang,70,80,90,10111,lin,90,80,90, 10086,zhao,70,80,90,10010,zhang,70,

23、70,70,10120,chen,80,80,90; switch(m) case 1:scanf(%d,&x); printf(%dn,f(x);break; case 2:scanf(%d,&n); data=(int*)malloc(n*sizeof(int); for(i=0;in;i+) scanf(%d,&datai); maxMinAver(data,&max,&min,&kave,n); printf(max:%dnmin:%dnave:%.1fn,max,min,kave);break; case 3:scanf(%s %s,str1,str2); printf(%dn,my

24、strcmp(str1,str2);break; case 4:for(i=0;iSIZE;i+) scanf(%d %s %f %f %f %f,&stui.num,, &stui.math,&stui.english,&puter,&stui.chinese); ave(stu,SIZE); for(i=0;iSIZE;i+) printf(num:%dnname:%snaverage:%.2fnn, stui.num,,stui.average);break; case 5:load();break; case 6:output();b

25、reak; case 7:for(n=0;nSIZE;n+) scanf(%d %s %f,&sTun.num,sT,&sTun.score); print(sTu,SIZE);break; case 8:for(n=0;nSIZE;n+) scanf(%d %s %f,&StUn.num,StU,&StUn.score); printf(The Order Is:n); comp(StU); for(n=0;n0) s=3*n*n-4; if(n=0) s=2; if(n0) s=0; return s;void maxMinAver(int *data,int *

26、max, int *min,float * ave,int size) int i,sum=0; *max=data0; *min=data0; for(i=0;isize;i+) if(*max=datai) *min=datai; sum+=datai; *ave=(float)sum/size;int mystrcmp(const char *str1, const char *str2) int i; for(i=0;*(str1+i) != 0 & *(str2+i) !=0;i+) if(*(str1+i) *(str2+i) return 1; if(*(str1+i) *(st

27、r2+i) return -1; if(*(str1+i) =*(str2+i) return 0; float ave(STU stu,int size) int i; for(i=0;isize;i+) stui.total=stui.math+stui.english+puter+stui.chinese; stui.average=stui.total/4; void load() int i; FILE*fp; if(fp=fopen(stu.txt,r)=NULL) printf(cannot open filen); exit (0); for(i=0;iSIZE

28、;i+) fscanf(fp,%s %d %d %s,&, &studi.num,&studi.age,&studi.addr); printf(%-10s %4d %4d %-15sn,, studi.num,studi.age,studi.addr); fclose (fp);void output() int i; FILE*fp; fp=fopen(PRINT.txt,w); for(i=0;iSIZE;i+) scanf(%s %s %d %d %d %d %d %f, S,Stui.addr,&Stui.grade,&Stui

29、.num, &Stui.height,&Stui.age,&Stui.score,&Stui.ave); /fprintf(fp,name addr grade num height age score aven); fprintf(fp,%s %s %d %d %d %d %d %5.2fn, S,Stui.addr,Stui.grade,Stui.num, Stui.height,Stui.age,Stui.score,Stui.ave); void print(struct sTudent sTu,int size) int i; for(i=0;isize;i+) pr

30、intf(num:%dnname:%snscore:%.2fnn,sTui.num,sT,sTui.score);void comp(struct studenT stu) int i,j,k,m; for(i=0;iSIZE-1;i+) k=i; for(j=i+1;jStUk.score) k=j; m=StUk.score; StUk.score=StUi.score; StUi.score=m; void searchscore(struct stuDent stu) int n,m,number=0; printf(enter the number you want:n

31、); scanf(%d,&m); printf(The Result Is:n); for(n=0;n5;n+) if(m=stun.num) printf(num:%dnname:%snchinese:%dnmath:%dnenglish:%dn,stun.num,, stun.chinese,stun.math,stun.english); number=1; if(number=0) printf(not found!n);評析:這是一個大型數據系統,將以上9個函數集結成一個大型數據,制作了精美的封面,主要用途與前9個題目相似,需要注意變量名與結構體數組名不能重復定義,

32、系統結構要清晰。題目11:創建一個工程文件,包含三個文件,第一個是主函數所在的源文件,含有顯示界面,選擇1-10,調用不同的函數,第二個是各個函數所在的源文件,第三個是各個函數原型所在的頭文件。解:1. arrangemain.c#include#include#include#define SIZE 10#includearrange.hint main() int num1,num2; char str; menu(); scanf(%d,&num1); sw(num1); getchar(); scanf(%c,&str); while (str=N|str=n&str=Y|str=y)

33、 if(str=y) scanf(%d,&num2); sw(num2); if(str=n) break; getchar(); scanf(%c,&str); return 0;2. Arrange.c#include#include#include#define SIZE 10typedef struct student int num; char name10; float math; float english; float computer; float chinese; float total; float average;STU;STU stuSIZE;struct stude

34、nt_type char name 10; int num; int age; char addr15;studSIZE;struct Student_type char name 10; char addr15; int grade; int num; int height; int age; int score; float ave;StuSIZE;struct sTudent int num; char name10; float score;sTuSIZE;struct studenT int num; char name10; float score;StUSIZE;struct s

35、tuDent int num; char name15; int chinese; int math; int english;int sw(int m) int x,n,i,max,min; char str1100,str2100; float kave; int *data; struct stuDent stuD5=10110,zhang,70,80,90,10111,lin,90,80,90, 10086,zhao,70,80,90,10010,zhang,70,70,70,10120,chen,80,80,90; switch(m) case 1:scanf(%d,&x); pri

36、ntf(%dn,f(x);break; case 2:scanf(%d,&n); data=(int*)malloc(n*sizeof(int); for(i=0;in;i+) scanf(%d,&datai); maxMinAver(data,&max,&min,&kave,n); printf(max:%dnmin:%dnave:%.1fn,max,min,kave);break; case 3:scanf(%s %s,str1,str2); printf(%dn,mystrcmp(str1,str2);break; case 4:for(i=0;iSIZE;i+) scanf(%d %s %f %f %f %f,&stui.num,, &stui.math,&stui.english,&puter,&stui.chinese); ave(stu,SIZE); for(i=0;iSIZE;i+) printf(num:%dnn

溫馨提示

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

最新文檔

評論

0/150

提交評論