数据结构实验报告及心得体会.docx
- 文档编号:23265926
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:36
- 大小:24.27KB
数据结构实验报告及心得体会.docx
《数据结构实验报告及心得体会.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告及心得体会.docx(36页珍藏版)》请在冰豆网上搜索。
数据结构实验报告及心得体会
2011~2012第一学期数据结构实验报告
班级:
信管一班
学号:
201051018
姓名:
史孟晨
实验报告题目及要求
一、实验题目
设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程
序(算法)。
1.输入学生的学号、姓名和N门课程的成绩(输入提示和输出显示使用汉字系统),输出实验结果。
(15分)
2.计算每个学生本学期N门课程的总分,输出总分和N门课程成绩排在前3名学生的学号、姓名和成绩。
3.按学生总分和N门课程成绩关键字升序排列名次,总分相同者同名次。
二、实验要求
1.修改算法。
将奇偶排序算法升序改为降序。
(15分)
2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。
(45分))
3.编译、链接以上算法,按要求写出实验报告(25)。
4.修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。
5.用A4纸打印输出实验报告。
三、实验报告说明
实验数据可自定义,每种排序算法数据要求均不重复。
(1)实验题目:
《N门课程学生成绩名次排序算法实现》;
(2)实验目的:
掌握各种排序算法的基本思想、实验方法和验证算法的准确性;
(3)实验要求:
对算法进行上机编译、链接、运行;
(4)实验环境(WindowsXP-sp3,Visualc++);
(5)实验算法(给出四种排序算法修改后的全部清单);
(6)实验结果(四种排序算法模拟运行后的实验结果);
(7)实验体会(文字说明本实验成功或不足之处)。
三、实验源程序(算法)
Score.c
#include"stdio.h"
#include"string.h"
#defineM6
#defineN3
structstudent
{charname[10];
intnumber;
intscore[N+1];/*score[N]为总分,score[0]-score[2]为学科成绩*/
}stu[M];
voidchangesort(structstudenta[],intn,intj)
{intflag=1,i;
structstudenttemp;
while(flag)
{flag=0;
for(i=1;i if(a[i].score[j]>a[i+1].score[j]) {temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;i if(a[i].score[j]>a[i+1].score[j]) {temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } } } voidprint_score(structstudenta[],intn,intj) {inti,k; printf(“奇偶交换成绩%d排序表",j+1); printf("\n"); printf("名次学号姓名分数\n"); k=1; for(i=0;k {if(i>0&&a[i].score[j]! =a[i-1].score[j]) k++; printf("%4d",k); printf("%4d",a[i].number); printf("%s",a[i].name); printf("%6d",a[i].score[j]); printf("\n"); } } main() {inti,j,k; for(i=0;i {printf("请输入第%d名学生分数: ",i+1);printf("\n"); printf("姓名: "); scanf("%s",stu[i].name); printf("编号: "); scanf("%4d",&stu[i].number); printf("数据结构: "); scanf("%4d",&stu[i].score[0]); printf("离散数学: "); scanf("%4d",&stu[i].score[1]); printf("大学英语: "); scanf("%4d",&stu[i].score[2]); } for(i=0;i {stu[i].score[N]=0; for(j=0;j stu[i].score[N]+=stu[i].score[j]; } changesort(stu,M,N);/*对总分进行排序*/ printf("学生总分成绩排序表\n"); printf("名次学号姓名数据结构离散数学大学英语总分\n"); k=1; for(i=0;i {if(i>0&&stu[i].score[N]! =stu[i-1].score[N]) k++; printf("%4d",k); printf("%4d",stu[i].number); printf("%s",stu[i].name); for(j=0;j printf("%6d",stu[i].score[j]); 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名同学成绩*/ } 源代码结果: 请输入第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 数据结构: 88 离散数学: 76 大学英语: 90 学生总分成绩排序表 名次学号姓名数据结构离散数学大学英语总分 15张一析786891237 22袁欣788092250 34滕芷798488251 46白晓彤887690254 51史孟晨879078255 63赵宇887695259 奇偶交换成绩1排序表 名次学号姓名分数 15张一析78 12袁欣78 24滕芷79 31史孟晨87 奇偶交换成绩2排序表 名次学号姓名分数 15张一析68 26白晓彤76 23赵宇76 32袁欣80 奇偶交换成绩3排序表 名次学号姓名分数 11史孟晨78 24滕芷88 36白晓彤90 Pressanykeytocontinue Change.c #include"stdio.h" #include"string.h" #defineM6 #defineN3 voidchangesort(structstudenta[],intn,intj); voidprint_score(structstudenta[],intn,intj); structstudent { charname[10]; intnumber; intscore[N+1];/*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; main() { inti,j,k; for(i=0;i { printf("请输入第%d名学生分数: ",i+1);printf("\n"); printf("姓名: "); scanf("%s",stu[i].name); printf("编号: "); scanf("%4d",&stu[i].number); printf("数据结构: "); scanf("%4d",&stu[i].score[0]); printf("离散数学: "); scanf("%4d",&stu[i].score[1]); printf("大学英语: "); scanf("%4d",&stu[i].score[2]); } for(i=0;i { stu[i].score[N]=0; for(j=0;j stu[i].score[N]+=stu[i].score[j]; } changesort(stu,M,N);/*对总分进行排序*/ printf("学生总分成绩排序表\n"); printf("名次学号姓名数据结构离散数学大学英语总分\n"); k=0; for(i=0;i { if(i>0&&stu[i].score[N]! =stu[i-1].score[N]) { k++; printf("%4d",k); printf("%4d",stu[i-1].number); printf("%s",stu[i-1].name); for(j=0;j { printf("%6d",stu[i-1].score[j]); } } 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名同学成绩*/ } voidchangesort(structstudenta[],intn,intj) { intflag=1,i; structstudenttemp; while(flag) { flag=0; for(i=1;i if(a[i].score[j] { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 心得体会