数据结构实验报告及心得体会.docx

上传人:b****6 文档编号:5806254 上传时间:2023-01-01 格式:DOCX 页数:30 大小:24.33KB
下载 相关 举报
数据结构实验报告及心得体会.docx_第1页
第1页 / 共30页
数据结构实验报告及心得体会.docx_第2页
第2页 / 共30页
数据结构实验报告及心得体会.docx_第3页
第3页 / 共30页
数据结构实验报告及心得体会.docx_第4页
第4页 / 共30页
数据结构实验报告及心得体会.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据结构实验报告及心得体会.docx

《数据结构实验报告及心得体会.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告及心得体会.docx(30页珍藏版)》请在冰豆网上搜索。

数据结构实验报告及心得体会.docx

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告

 

班级:

信管一班

学号:

*********

姓名:

***

 

实验报告题目及要求

一、实验题目

设某班级有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;

}

for(i=0;i

if(a[i].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");

}

}

升序改降序:

请输入第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

学生总分成绩排序表

名次学号姓名数据结构离散数学大学英语总分

13赵宇887695259

21史孟晨879078255

36白晓彤887690254

44滕芷798488251

52袁欣788092250

65张一析786891237

奇偶交换成绩1排序表

名次学号姓名分数

13赵宇88

16白晓彤88

21史孟晨87

34滕芷79

奇偶交换成绩2排序表

名次学号姓名分数

11史孟晨90

24滕芷84

32袁欣80

奇偶交换成绩3排序表

名次学号姓名分数

13赵宇95

22袁欣92

35张一析91

Pressanykeytocontinue

Seletsort.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,m,k;

structstudenttemp;

while(flag)

{

flag=0;

for(i=0;i

{

k=i;

for(m=i+1;m

if(a[m].score[j]>a[k].score[j])

{

k=m;

temp=a[i];

a[i]=a[k];

a[k]=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");

}

}

简单选择:

请输入第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

学生总分成绩排序表

名次学号姓名数据结构离散数学大学英语总分

13赵宇887695259

21史孟晨879078255

36白晓彤887690254

44滕芷798488251

52袁欣788092250

65张一析786891237

选择交换成绩1排序表

名次学号姓名分数

13赵宇88

16白晓彤88

21史孟晨87

34滕芷79

选择交换成绩2排序表

名次学号姓名分数

11史孟晨90

24滕芷84

32袁欣80

选择交换成绩3排序表

名次学号姓名分数

13赵宇95

22袁欣92

35张一析91

Pressanykeytocontinue

Bubblesort.c

#inclu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1