2023年高级程序语言程序设计实验报告

上传人:豆*** 文档编号:166250107 上传时间:2022-10-31 格式:DOC 页数:54 大小:358KB
收藏 版权申诉 举报 下载
2023年高级程序语言程序设计实验报告_第1页
第1页 / 共54页
2023年高级程序语言程序设计实验报告_第2页
第2页 / 共54页
2023年高级程序语言程序设计实验报告_第3页
第3页 / 共54页
资源描述:

《2023年高级程序语言程序设计实验报告》由会员分享,可在线阅读,更多相关《2023年高级程序语言程序设计实验报告(54页珍藏版)》请在装配图网上搜索。

1、 高级语言程序设计课程设计题目:多重模块管理专 业 计算机 班 级 1306班 学 生 林道松 学 号 指导教师 鲍春波 /肖琳 起止时间 2023-2-172023-2-21 2023年 2月目录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); result=f(num); printf(

2、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分别指向最大值、最小值和平均值,size是数组的大小。规定第一个实参是数组,第2、3、

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+) scanf(%d,&datai); maxMinAv

4、er(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(str1,str2); return 0;int m

6、ystrcmp(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 main() int i; printf(plea

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

9、(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; int num; int age; char addr15;studSIZE;v

10、oid 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.name, &studi.num,&studi.age,&studi.addr); printf(%-10s %4d %4d %-15sn,studi.name, studi.num,studi.age,studi.addr); fclo

11、se (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 num; int height; int age; int score; float

12、 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.name,stui.addr,&stui.grade,&stui.num, &stui.height,&stui.age,&stui.score,&stui.ave); fprintf(fp,%s %s %d %d %d %d %d %5.2fn, stui.name

13、,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);int main () int n; for(n=0;nSIZE;n+) scanf

14、(%d %s %f,&stun.num,stun.name,&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.name,stui.score);评析:注意函数的调用和输入和输出的格式。题目8 :写一个函数可以把一组学生成绩信息按总分进行排序,测试之。解:#include#define SIZE 2struct student int num

15、; 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,STUn.name,&STUn.score); printf(The Order Is:n); comp(STU); for(n=0;nSIZE;n+) printf(%6d%10s%8.1fn,STUn.num,STUn.name,STUn.score); return 0;void comp(struct student stu) int i

16、,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 chinese; int math; int english;void searchsco

17、re(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 number you want:n); scanf(%d,&m); printf(The

18、 Result Is:n); for(n=0;n5;n+) if(m=stun.num) printf(num:%dnname:%snchinese:%dnmath:%dnenglish:%dn,stun.num,stun.name, stun.chinese,stun.math,stun.english); number=1; if(number=0) printf(not found!n);评析;这是一个信息搜索程序,学生的信息可以是事先定义,也可以采用用户输入形式。题目10 : 设计一个界面函数,包含上述11个题目的调用,即 请选择1 调用第一个函数(具体的函数名)2 调用第二个函数(具

19、体的函数名)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 total; float average;STU;STU stuSIZE;void loa

20、d();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; float score;sTuSIZE;void comp();struct stu

21、denT 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); while (str=N|str=n&str=Y|str=y) if(str

22、=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,70,70,10120,chen,80,80,90; switch(m) case

23、 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,mystrcmp(str1,str2);break; case 4:for(i=0;i

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

25、un.num,sTun.name,&sTun.score); print(sTu,SIZE);break; case 8:for(n=0;nSIZE;n+) scanf(%d %s %f,&StUn.num,StUn.name,&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 *max, int *min,float * ave,int size) int i,sum=0;

26、*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) *(str2+i) return -1; if(*(str1+i) =*(str2+i) return 0

27、; 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;i+) fscanf(fp,%s %d %d %s,&studi.name, &studi.num,&studi

28、.age,&studi.addr); printf(%-10s %4d %4d %-15sn,studi.name, 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, Stui.name,Stui.addr,&Stui.grade,&Stui.num, &Stui.height,&Stui.age,&Stui.score,&Stui.ave); /fpr

29、intf(fp,name addr grade num height age score aven); fprintf(fp,%s %s %d %d %d %d %d %5.2fn, Stui.name,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+) printf(num:%dnname:%snscore:%.2fnn,sTui.num,sTui.name,sTui.

30、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); scanf(%d,&m); printf(The Result Is:n); for(n=0;n5;n+)

31、if(m=stun.num) printf(num:%dnname:%snchinese:%dnmath:%dnenglish:%dn,stun.num,stun.name, stun.chinese,stun.math,stun.english); number=1; if(number=0) printf(not found!n);评析:这是一个大型数据系统,将以上9个函数集结成一个大型数据,制作了精美的封面,重要用途与前9个题目相似,需要注意变量名与结构体数组名不能反复定义,系统结构要清楚。题目11:创建一个工程文献,包含三个文献,第一个是主函数所在的源文献,具有显示界面,选择1-10,

32、调用不同的函数,第二个是各个函数所在的源文献,第三个是各个函数原型所在的头文献。解: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) if(str=y) scanf(%d,&num2); sw(num2); if(str=n) break; ge

33、tchar(); 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 student_type char name 10; int num; int age; char addr15;studS

34、IZE;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 stuDent int num; char name15; int chinese; int math; int e

35、nglish;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); printf(%dn,f(x);break; case 2:scanf(%d,&n); data=(int*)mallo

36、c(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.name, &stui.math,&stui.englis

37、h,&puter,&stui.chinese); ave(stu,SIZE); for(i=0;iSIZE;i+) printf(num:%dnname:%snaverage:%.2fnn, stui.num,stui.name,stui.average);break; case 5:load();break; case 6:output();break; case 7:for(n=0;nSIZE;n+) scanf(%d %s %f,&sTun.num,sTun.name,&sTun.score); print(sTu,SIZE);break; case 8:for(n=0;nSIZE;n+

38、) scanf(%d %s %f,&StUn.num,StUn.name,&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 *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+=dat

39、ai; *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) *(str2+i) return -1; if(*(str1+i) =*(str2+i) return 0; void ave(STU stu,int size) int i; for(i=0;isize;i+) stui.total=stui.math+st

40、ui.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;i+) fscanf(fp,%s %d %d %s,&studi.name, &studi.num,&studi.age,&studi.addr); printf(%-10s %4d %4d %-15sn,studi.name, studi.num,studi.age,studi.addr); fclose (fp);void output() int i; FILE*fp; fp=fopen(PRINT.txt,w); for(i=0;iSIZE;i+) sc

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!