大数据结构实验报告材料及心得体会_第1页
大数据结构实验报告材料及心得体会_第2页
大数据结构实验报告材料及心得体会_第3页
大数据结构实验报告材料及心得体会_第4页
大数据结构实验报告材料及心得体会_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上20112012第一学期数据结构实验报告班级:信管一班 学号: 姓名:史孟晨实验报告题目及要求 一、实验题目设某班级有M(6)名学生,本学期共开设N(3)门课程, 要求实现并修改如下程序(算法)。1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统),输出实验结果 。(15分)2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学生的学号、姓名和成绩。3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求1修改算法。将奇偶排序算法升序改为降序。(15分)2用选择排序、冒泡排序、插入排

2、序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)3编译、链接以上算法,按要求写出实验报告(25)。4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。5用A4纸打印输出实验报告。三、实验报告说明实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:N门课程学生成绩名次排序算法实现; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c+); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结

3、果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。三、实验源程序(算法)Score.c#include stdio.h#include string.h#define M 6#define N 3struct student char name10; int number; int scoreN+1; /*scoreN为总分,score0-score2为学科成绩*/ stuM;void changesort(struct student a,int n,int j) int flag=1,i; struct student temp; while(fl

4、ag) flag=0; for(i=1;iai+1.scorej) temp=ai; ai=ai+1; ai+1=temp; flag=1; for(i=0;iai+1.scorej) temp=ai; ai=ai+1; ai+1=temp; flag=1; void print_score(struct student a,int n,int j) int i,k; printf(“ 奇偶交换 成绩 %d 排序表,j+1); printf(n); printf( 名 次 学 号 姓 名 分 数n); k=1; for(i=0;kN&i0&ai.scorej!=ai-1.scorej) k+;

5、 printf( %4d ,k); printf(%4d,ai.number); printf( %s,); printf( %6d,ai.scorej); printf(n); main() int i,j,k; for (i=0;iM;i+) /*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: ); scanf(%4d,&stui.number); printf(数据结构: ); scanf(%4d,&stui.score0);

6、printf(离散数学: ); scanf(%4d,&stui.score1); printf(大学英语: ); scanf(%4d,&stui.score2); for(i=0;iM;i+) /*计算每个学生总分*/ stui.scoreN=0; for(j=0;jN;j+) stui.scoreN+=stui.scorej; changesort(stu,M,N); /*对总分进行排序*/ printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=1; for(i=0;i0&stui.scoreN!=stui-1.scor

7、eN) k+; printf(%4d,k); printf( %4d,stui.number); printf( %s,); for(j=0;jN+1;j+) printf( %6d,stui.scorej); printf(n); changesort(stu,M,0); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/ changesort(stu,M

8、,2); /*对大学英语成绩进行排序*/ print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/ 源代码结果:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学: 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号:

9、05数据结构: 78离散数学: 68大学英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 88离散数学: 76大学英语: 90 学生总分成绩排序表 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分 1 5 张一析 78 68 91 237 2 2 袁欣 78 80 92 250 3 4 滕芷 79 84 88 251 4 6 白晓彤 88 76 90 254 5 1 史孟晨 87 90 78 255 6 3 赵宇 88 76 95 259 奇偶交换 成绩 1 排序表 名 次 学 号 姓 名 分 数 1 5 张一析 78 1 2 袁欣 78 2 4 滕芷 7

10、9 3 1 史孟晨 87 奇偶交换 成绩 2 排序表 名 次 学 号 姓 名 分 数 1 5 张一析 68 2 6 白晓彤 76 2 3 赵宇 76 3 2 袁欣 80 奇偶交换 成绩 3 排序表 名 次 学 号 姓 名 分 数 1 1 史孟晨 78 2 4 滕芷 88 3 6 白晓彤 90Press any key to continueChange.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct student a,int n,int j);void print_score(str

11、uct student a,int n,int j);struct student char name10; int number; int scoreN+1;/*scoreN为总分,score0-score2为学科成绩*/ stuM;main() int i,j,k; for (i=0;iM;i+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf(%4d,&stui.number); printf(数据结构: );scanf(%

12、4d,&stui.score0); printf(离散数学: );scanf(%4d,&stui.score1);printf(大学英语: );scanf(%4d,&stui.score2); for(i=0;iM;i+)/*计算每个学生总分*/ stui.scoreN=0; for(j=0;jN;j+) stui.scoreN+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=0; for(i=0;i0&stui.scoreN!

13、=stui-1.scoreN) k+; printf(%4d,k);printf( %4d,stui-1.number);printf( %s,);for(j=0;jN+1;j+)printf( %6d,stui-1.scorej); printf(n); changesort(stu,M,0); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/ ch

14、angesort(stu,M,2); /*对大学英语成绩进行排序*/ print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/ void changesort(struct student a,int n,int j) int flag=1,i;struct student temp; while(flag) flag=0; for(i=1;in-1;i+=2) /*对所有奇数项进行一遍比较*/ if (ai.scorej ai+1.scorej) temp=ai; ai=ai+1; ai+1=temp; flag=1; for(i=0;in-1;i+=2) /*对所

15、有偶数项进行一遍比较*/ if (ai.scorej ai+1.scorej) temp=ai; ai=ai+1; ai+1=temp; flag=1; void print_score(struct student a,int n,int j) int i,k; printf( 奇偶交换 成绩 %d 排序表,j+1); printf(n); printf( 名 次 学 号 姓 名 分 数n); k=1; for(i=0;kN&i0&ai.scorej!=ai-1.scorej) k+; printf( %4d ,k); printf(%4d,ai.number); printf( %s,ai

16、.name); printf( %6d,ai.scorej); printf(n); 升序改降序:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学: 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号: 05数据结构: 78离散数学: 68大学

17、英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 88离散数学: 76大学英语: 90 学生总分成绩排序表 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分 1 3 赵宇 88 76 95 259 2 1 史孟晨 87 90 78 255 3 6 白晓彤 88 76 90 254 4 4 滕芷 79 84 88 251 5 2 袁欣 78 80 92 250 6 5 张一析 78 68 91 237 奇偶交换 成绩 1 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 88 1 6 白晓彤 88 2 1 史孟晨 87 3 4 滕芷 79 奇偶交换 成绩

18、 2 排序表 名 次 学 号 姓 名 分 数 1 1 史孟晨 90 2 4 滕芷 84 3 2 袁欣 80 奇偶交换 成绩 3 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 95 2 2 袁欣 92 3 5 张一析 91Press any key to continueSeletsort.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct student a,int n,int j);void print_score(struct student a,int n,int j);st

19、ruct student char name10; int number; int scoreN+1;/*scoreN为总分,score0-score2为学科成绩*/ stuM;main() int i,j,k; for (i=0;iM;i+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf(%4d,&stui.number); printf(数据结构: );scanf(%4d,&stui.score0); printf(离散数学

20、: );scanf(%4d,&stui.score1);printf(大学英语: );scanf(%4d,&stui.score2); for(i=0;iM;i+)/*计算每个学生总分*/ stui.scoreN=0; for(j=0;jN;j+) stui.scoreN+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=0; for(i=0;i0&stui.scoreN!=stui-1.scoreN) k+; printf(%4

21、d,k);printf( %4d,stui-1.number);printf( %s,);for(j=0;jN+1;j+)printf( %6d,stui-1.scorej); printf(n); changesort(stu,M,0); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/ changesort(stu,M,2); /*对大学英语成绩进

22、行排序*/ print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/ void changesort(struct student a,int n,int j) int flag=1,i,m,k;struct student temp; while(flag) flag=0; for(i=0;in-1;i+) /*选择排序法*/ k=i;for(m=i+1;mak.scorej)k=m;temp=ai;ai=ak;ak=temp;flag=1; void print_score(struct student a,int n,int j) int i,k; printf

23、( 选择交换 成绩 %d 排序表,j+1); printf(n); printf( 名 次 学 号 姓 名 分 数n); k=1; for(i=0;kN&i0&ai.scorej!=ai-1.scorej) k+; printf( %4d ,k); printf(%4d,ai.number); printf( %s,); printf( %6d,ai.scorej); printf(n); 简单选择:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学: 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学

24、: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号: 05数据结构: 78离散数学: 68大学英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 88离散数学: 76大学英语: 90 学生总分成绩排序表 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分 1 3 赵宇 88 76 95 259 2 1 史孟晨 87 90 78 255 3

25、 6 白晓彤 88 76 90 254 4 4 滕芷 79 84 88 251 5 2 袁欣 78 80 92 250 6 5 张一析 78 68 91 237 选择交换 成绩 1 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 88 1 6 白晓彤 88 2 1 史孟晨 87 3 4 滕芷 79 选择交换 成绩 2 排序表 名 次 学 号 姓 名 分 数 1 1 史孟晨 90 2 4 滕芷 84 3 2 袁欣 80 选择交换 成绩 3 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 95 2 2 袁欣 92 3 5 张一析 91Press any key to continueB

26、ubblesort.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct student a,int n,int j);void print_score(struct student a,int n,int j);struct student char name10; int number; int scoreN+1;/*scoreN为总分,score0-score2为学科成绩*/ stuM;main() int i,j,k; for (i=0;iM;i+)/*输入每个学生信息*/ prin

27、tf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf(%4d,&stui.number); printf(数据结构: );scanf(%4d,&stui.score0); printf(离散数学: );scanf(%4d,&stui.score1);printf(大学英语: );scanf(%4d,&stui.score2); for(i=0;iM;i+)/*计算每个学生总分*/ stui.scoreN=0; for(j=0;jN;j+) stui.scoreN+=s

28、tui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=0; for(i=0;i0&stui.scoreN!=stui-1.scoreN) k+; printf(%4d,k);printf( %4d,stui-1.number);printf( %s,);for(j=0;jN+1;j+)printf( %6d,stui-1.scorej); printf(n); changesort(stu,M,0); /*对数据结构

29、成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/ changesort(stu,M,2); /*对大学英语成绩进行排序*/ print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/ void changesort(struct student a,int n,int j) int flag=1,i;struct student temp; while(flag)

30、 flag=0; for(i=0;in;i+) /*冒泡排序法*/ if (ai.scorej ai+1.scorej) temp=ai; ai=ai+1; ai+1=temp; flag=1; void print_score(struct student a,int n,int j) int i,k; printf( 冒泡交换 成绩 %d 排序表,j+1); printf(n); printf( 名 次 学 号 姓 名 分 数n); k=1; for(i=0;kN&i0&ai.scorej!=ai-1.scorej) k+; printf( %4d ,k); printf(%4d,ai.n

31、umber); printf( %s,); printf( %6d,ai.scorej); printf(n); 运行结果:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学: 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号:

32、05数据结构: 78离散数学: 68大学英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 88离散数学: 76大学英语: 90 学生总分成绩排序表 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分 1 3 赵宇 88 76 95 259 2 1 史孟晨 87 90 78 255 3 6 白晓彤 88 76 90 254 4 4 滕芷 79 84 88 251 5 2 袁欣 78 80 92 250 6 5 张一析 78 68 91 237 冒泡交换 成绩 1 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 88 1 6 白晓彤 88 2 1 史孟晨

33、87 3 4 滕芷 79 冒泡交换 成绩 2 排序表 名 次 学 号 姓 名 分 数 1 1 史孟晨 90 2 4 滕芷 84 3 2 袁欣 80 冒泡交换 成绩 3 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇 95 2 2 袁欣 92 3 5 张一析 91Press any key to continueJusertsort.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct student a,int n,int j);void print_score(struct stud

34、ent a,int n,int j);struct student char name10; int number; int scoreN+1;/*scoreN为总分,score0-score2为学科成绩*/ stuM;main() int i,j,k; for (i=0;iM;i+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf(%4d,&stui.number); printf(数据结构: );scanf(%4d,&stui

35、.score0); printf(离散数学: );scanf(%4d,&stui.score1);printf(大学英语: );scanf(%4d,&stui.score2); for(i=0;iM;i+)/*计算每个学生总分*/ stui.scoreN=0; for(j=0;jN;j+) stui.scoreN+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=0; for(i=0;i0&stui.scoreN!=stui-1.

36、scoreN) k+; printf(%4d,k);printf( %4d,stui-1.number);printf( %s,);for(j=0;jN+1;j+)printf( %6d,stui-1.scorej); printf(n); changesort(stu,M,0); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /*输出离散数学前 3 名同学成绩*/ changesort(stu,M,2); /*对大学英语成绩进行排序*/ print_score(st

温馨提示

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

评论

0/150

提交评论