




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业20112012第一学期数据结构实验报告班级:信管一班 学号: 姓名:史孟晨实验报告题目及要求 一、实验题目设某班级有M(6)名学生,本学期共开设N(3)门课程, 要求实现并修改如下程序(算法)。1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统),输出实验结果 。(15分)2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学生的学号、姓名和成绩。3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同
2、名次。 二、实验要求1修改算法。将奇偶排序算法升序改为降序。(15分)2用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)3编译、链接以上算法,按要求写出实验报告(25)。4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。5用A4纸打印输出实验报告。三、实验报告说明实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:N门课程学生成绩名次排序算法实现; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-s
3、p3,Visual c+); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (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,
4、int j) int flag=1,i; struct student temp; while(flag) 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( 名 次 学 号 姓 名 分 数
5、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); main() int i,j,k; for (i=0;iM;i+) /*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: ); scanf(%4d,&stui.
6、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+=stui.scorej; changesort(stu,M,N); /*对总分进行排序*/ printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学
7、英语 总 分n); k=1; for(i=0;i0&stui.scoreN!=stui-1.scoreN) 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_sc
8、ore(stu,M,1); /*输出离散数学前 3 名同学成绩*/ changesort(stu,M,2); /*对大学英语成绩进行排序*/ print_score(stu,M,2); /*输出大学英语前 3 名同学成绩*/ 源代码结果:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学: 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04
9、数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号: 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
10、 排序表 名 次 学 号 姓 名 分 数 1 5 张一析 78 1 2 袁欣 78 2 4 滕芷 79 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(
11、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+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号:
12、 );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+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名
13、数据结构 离散数学 大学英语 总 分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); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进
14、行排序*/ 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) flag=0; for(i=1;in-1;i+=2) /*对所有奇数项进行一遍比较*/ if (ai.scorej ai+1.scorej) temp=ai; a
15、i=ai+1; ai+1=temp; flag=1; for(i=0;in-1;i+=2) /*对所有偶数项进行一遍比较*/ 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+; pri
16、ntf( %4d ,k); printf(%4d,ai.number); 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大学英语
17、: 88请输入第 5 名学生分数:姓 名: 张一析编 号: 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 排序表 名 次 学 号 姓 名 分 数
18、 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 continueSeletsort.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct student a,int n,int j)
19、;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+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf(%4d,&stui.number); p
20、rintf(数据结构: );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+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数学 大学英语 总 分n); k=0; fo
21、r(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); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ print_score(stu,M,1); /
22、*输出离散数学前 3 名同学成绩*/ changesort(stu,M,2); /*对大学英语成绩进行排序*/ 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_s
23、core(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,); printf( %6d,ai.scorej); printf(n); 简单选择:请输入第 1 名学生分数:姓 名: 史孟晨编 号: 01数据结构: 87离散数学:
24、 90大学英语: 78请输入第 2 名学生分数:姓 名: 袁欣编 号: 02数据结构: 78离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04数据结构: 79离散数学: 84大学英语: 88请输入第 5 名学生分数:姓 名: 张一析编 号: 05数据结构: 78离散数学: 68大学英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 88离散数学: 76大学英语: 90 学生总分成绩排序表 名次 学号 姓 名 数据结构 离散数学 大
25、学英语 总 分 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 选择交换 成绩 2 排序表 名 次 学 号 姓 名 分 数 1 1 史孟晨 90 2 4 滕芷 84 3 2 袁欣 80 选择交换 成绩 3 排序表 名 次 学 号 姓 名 分 数 1 3 赵宇
26、 95 2 2 袁欣 92 3 5 张一析 91Press any key to continueBubblesort.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;
27、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(离散数学: );scanf(%4d,&stui.score1);printf(大学英语: );scanf(%4d,&stui.score2); for(i=0;iM;i+)/*计算每个学
28、生总分*/ 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(%4d,k);printf( %4d,stui-1.number);printf( %s,);for(j=0;jN+1;j+)printf( %6d,stui-
29、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(stu,M,2); /*输出大学英语前 3 名同学成绩*/ void changesort(struct student a,int n,in
30、t j) int flag=1,i;struct student temp; while(flag) 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!
31、=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离散数学: 80大学英语: 92请输入第 3 名学生分数:姓 名: 赵宇编 号: 03数据结构: 88离散数学: 76大学英语: 95请输入第 4 名学生分数:姓 名: 滕芷编 号: 04
32、数据结构: 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 6 白晓彤 88 76 90 254 4 4 滕芷 79 84 88 251 5 2 袁欣 78 80 92 250 6 5 张一析 78 68 91 237 冒泡交换 成绩 1
33、 排序表 名 次 学 号 姓 名 分 数 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 continueJusertsort.c#include stdio.h#include string.h#define M 6#define N 3void changesort(struct s
34、tudent 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+)/*输入每个学生信息*/ printf(请输入第 %d 名学生分数: ,i+1);printf(n); printf(姓 名: ); scanf(%s,); printf(编 号: );scanf
35、(%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+=stui.scorej; changesort(stu,M,N);/*对总分进行排序*/printf( 学生总分成绩排序表n); printf( 名次 学号 姓 名 数据结构 离散数
36、学 大学英语 总 分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); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/ changesort(stu,M,1); /*对离散数学成绩进行排序*/ pr
37、int_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 i, m;struct student temp; /*插入排序法*/ for(i=1; i0 & temp.scorej am-1.scorej; m-) am = am-1; am = temp; void print_score(struct studen
38、t 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,); 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大学英语: 91请输入第 6 名学生分数:姓 名: 白晓彤编 号: 06数据结构: 8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物质变化的试题及答案
- 新能源汽车产值与市场战略研究试题及答案
- 电子与波动性探讨试题及答案
- 工业互联网平台量子通信技术2025年产业发展与技术创新趋势研究报告
- 教师教育教学反思与职业发展支持的有效结合试题及答案
- 提高自我管理的土木工程师考试试题及答案
- 注册土木工程师备考新策略试题及答案
- 梅州市2025年小升初常考易错数学检测卷含解析
- 西南民族大学《热工基础课程设计》2023-2024学年第二学期期末试卷
- 家具设计中的图形表现手法试题及答案
- 2024年北京客运驾驶员技能测试题库及答案
- 买床合同范本
- 社区获得性肺炎(1)护理病历临床病案
- GB/T 35428-2024医院负压隔离病房环境控制要求
- 新《建筑节能》考试复习题库(浓缩500题)
- 2024年7月中央电大本科《法律文书》期末考试试题及答案
- 因式分解(分组分解法)练习100题及答案
- GB/T 15597.2-2024塑料聚甲基丙烯酸甲酯(PMMA)模塑和挤出材料第2部分:试样制备和性能测定
- JT-T-1180.1-2018交通运输企业安全生产标准化建设基本规范第1部分:总体要求
- 国能辽宁北票200MW 风力发电项目可行性研究
- 泛血管疾病抗栓治疗中国专家共识(2024版)
评论
0/150
提交评论