您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数据结构实验报告及心得体会
12011~2012第一学期数据结构实验报告班级:信管一班学号:201051018姓名:史孟晨2实验报告题目及要求一、实验题目设某班级有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)实验体会(文字说明本实验成功或不足之处)。3三、实验源程序(算法)Score.c#includestdio.h#includestring.h#defineM6#defineN3structstudent{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;in-1;i+=2)/*对所有奇数项进行一遍比较*/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;in-1;i+=2)/*对所有偶数项进行一遍比较*/if(a[i].score[j]a[i+1].score[j]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;flag=1;4}}}voidprint_score(structstudenta[],intn,intj){inti,k;printf(“奇偶交换成绩%d排序表,j+1);printf(\n);printf(名次学号姓名分数\n);k=1;for(i=0;kN&∈i++){if(i0&&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;iM;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(离散数学:);5scanf(%4d,&stu[i].score[1]);printf(大学英语:);scanf(%4d,&stu[i].score[2]);}for(i=0;iM;i++)/*计算每个学生总分*/{stu[i].score[N]=0;for(j=0;jN;j++)stu[i].score[N]+=stu[i].score[j];}changesort(stu,M,N);/*对总分进行排序*/printf(学生总分成绩排序表\n);printf(名次学号姓名数据结构离散数学大学英语总分\n);k=1;for(i=0;iM;i++){if(i0&&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;jN+1;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名同学成绩*/}6源代码结果:请输入第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大学英语:907学生总分成绩排序表名次学号姓名数据结构离散数学大学英语总分15张一析78689123722袁欣78809225034滕芷79848825146白晓彤88769025451史孟晨87907825563赵宇887695259奇偶交换成绩1排序表名次学号姓名分数15张一析7812袁欣7824滕芷7931史孟晨87奇偶交换成绩2排序表名次学号姓名分数15张一析6826白晓彤7623赵宇7632袁欣80奇偶交换成绩3排序表名次学号姓名分数11史孟晨7824滕芷8836白晓彤90Pressanykeytocontinue8Change.c#includestdio.h#includestring.h#defineM6#defineN3voidchangesort(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;iM;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;iM;i++)/*计算每个学生总分*/{stu[i].score[N]=0;for(j=0;jN;j++)stu[i].score[N]+=stu[i].score[j];9}changesort(stu,M,N);/*对总分进行排序*/printf(学生总分成绩排序表\n);printf(名次学号姓名数据结构离散数学大学英语总分\n);k=0;for(i=0;iM+1;i++){if(i0&&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;jN+1;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;in-1;i+=2)/*对所有奇数项进行一遍比较*/if(a[i].score[j]a[i+1].score[j]){temp=a[i];a[i]=a[i+1];10a[i+1]=temp;flag=1;}for(i=0;in-1;i+=2)/*对所有偶数项进行一遍比较*/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;kN&∈i++){if(i0&&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);}}升序改降序:请输入第1名学生分数:姓名:史孟晨编号:01数据结构:87离散数学:90大学英语:78请输入第2名学生分数:姓名:袁欣11编号:02数据结构:78离散数学:80大学英语:92请输入第3名学生分数:姓名:赵宇编号:03数据结构:88离散数学:76大学英语:95请输入第4名学生分数:姓名:滕芷编号:04数据结构:79离散数学:84大学英语:88请输入第5名学生分数:姓名:张一析编号:05数据结构:78离散数学:68大学英语:91请输入第6名学生分数:姓名:白晓彤编号:06数据结构:88离散数学:76大学英语:90学生总分成绩排序表名次学号姓名数据结构离散数学大学英语总分13赵宇88769525921史孟晨87907825536白晓彤88769025444滕芷79848825152袁欣78809225065张一析786891237奇偶交换成绩1排序表名次学号姓名分数13赵宇8816白晓彤8821史孟晨8734滕芷79奇偶交换成绩2排序表12名次学号姓名分数11史孟晨9024滕芷8432袁欣80奇偶交换成绩3排序表名次学号姓名分数13赵宇9522袁欣9235张一析91Pressanykeytocontinue13Seletsor
本文标题:数据结构实验报告及心得体会
链接地址:https://www.777doc.com/doc-4684065 .html