数据结构实验报告模板1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西南石油大学实验报告

一、实验目的

1、掌握使用VC6.0 上机调试线性表的基本方法;

2、掌握线性表的基本操作:插入、查找、操作等运算在顺序存储结构上的操作。

二、实验内容

输入某个班每个学生的所有学生的所有课程的成绩,对所有成绩作如下处理:1)求每门课的平均分;

2)输出所有有不及格的课程的学生的学号、全部课程的成绩、平均成绩。三、算法描述

要求:说明程序设计的基本思想,原理和算法描述(包括程序的结构,数据结构,输入/输出设计,符号名说明等)

例如:

以每个学生为对象建立一个单链表,其中每个学生为一个结构体。学生结构体中包含学号、姓名、学生所有课程的成绩、课程平均分等多个域。设每个学生学习的课程数目为4,则其结构可用下图所示。

学号姓名课程1 课程2 课程3 课程4 平均分指针域

则结构体的类型说明如下:

typedef struct stnode

{ int id; /*学号*/

char name[16]; /*姓名*/

int class[4]; /课程成绩数组

float ave; //学生个人所有课程的平均成绩

struct stnode *next; //指针域

}students;

首先创建一个包含所有学生的单链表,输入每个学生各门功课的成绩,同时求出每个学生个人所有课程的平均成绩。然后设计一个累加器sum,令其初始值为0,对单链表从表头到表尾进行一次完整的访问,可求得各门课程所有学生得分的平均值。

四、算法实现

#include

#include

#define m 4 /* 每个学生所学课程数 */

#define NULL 0

typedef struct stnode

{

int id; /*学号*/

char name[16]; /*姓名*/

int class[4]; /所有课程成绩分别放存储在

float ave;

struct stnode *next;

}students;

students *head;

int n;

averge()

{

int i,j;

float sum,aver;

students *p;

printf("Class Average result\n");

printf("********Class********Class Average********\n");

for(i=0;i

{

j=0;

sum=0;

p=head;

while(p->next)

{

sum=sum+p->class[i];

p=p->next;

j++;

}

aver=sum/j;

printf("* Class%d %16.2f\n",i+1,aver);

}

printf("***********************\n\n");

}

nopass()

{

int i;

students *p;

p=head;

printf("No Pass result\n");

printf("******ID*******Name**************Class************Average***\n" );

while(p->next)

{

i=0;

while(i

{

if(p->class[i]<60)

{

printf("%8d%10s",p->id,p->name);

for(i=0;i

printf("%6d",p->class[i]);

printf("%8.2f\n",p->ave);

break;

}

else i++;

}

p=p->next;

}

printf("*************************************\n\n");

}

main()

{

students *p,*q;

int i,j;

float sum;

printf("Please student num!\n");

scanf("%d",&n);

head=(students *)malloc(sizeof(students));

q=head;

for(i=0;i

{

printf("input student%d ists ID,name\n",i+1);

p=q;

scanf("%d\n",&p->id);

scanf("%s",&p->name);

printf("\n");

printf("input student %i its score\n",i+1);

for(j=0;j

scanf("%d",&p->class[j]);

q=(students*)malloc(sizeof(students));

q->next=p;

p=head;

while(p->next)

{

sum=0;

for(j=0;j

sum=sum+p->class[j];

p->ave=sum/m;

p=p->next;

}

averge();

nopass();

}

}

(写出算法实现的程序源代码以及相应的注释)

五、运行结果

(粘贴出VC6.0 运行结果的截图)

六、心得体会

在实验过程中……通过此次实验…….

(要求:写出实验过程中存在的问题及采取的措施,对算法的讨论、分析,改进设想,其它经验教训或心得体会)

注意:

蓝色部分为举例说明文字,红色为实验要求说明部分,大家在写实验室报告时候删除或者用实际内容取代即可

标题统一用宋体四号字,正文用小四,行间距为1.5倍行间距

相关文档
最新文档