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

上传人:b****5 文档编号:4492398 上传时间:2022-12-01 格式:DOCX 页数:30 大小:24.34KB
下载 相关 举报
数据结构实验报告及心得体会数据结构实验心得体会.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

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

当前位置:首页 > 高中教育 > 高中教育

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

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