数据结构实验——预备实验

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

预备知识实验

一、实验目的

1、复习C语言中结构体类型的定义方法,掌握数据元素类型的定义方法。

2、掌握存储空间分配和释放的基本方法。

3、巩固结构体变量成员的“.”引用和“->“引用。

4、掌握C语言函数的声明、定义和调用。

二、实验内容

学生信息管理:某年级共有n个学生,每个学生的信息构成一个记录,如下表所示,学生的学号作为关键字(key)。这n个记录构成了一个长度为n的线性表。现要求完

1、输入所有学生的信息,建立学生表。

2、输出所有学生的信息。

3、查找:在学生表中查找指定学生的信息,如果找到就显示该生的所有信息,否则显

示“该学生的信息不存在,查找失败”。

4、修改:在学生表中修改指定学生的信息,然后显示所有学生信息,如果表中不存在

该生就显示“该生的信息不存在,修改失败”。

5、添加:在当前学生表的末尾添加一个记录(记录数增加1)

例如,添加记录为:4256033 吴强男 82 85 90

要求:按下列方法和步骤完成程序,并上机调试通过。

(1)用struct和typedef语句定义学生记录类型(即定义数据元素的类型)。

typedef struct student{

int number;

char name[20];

char sex[2];

int English;

int Computer;

int Math;

int total;

double average;

}STUDENT;

(2)确定存储结构,现采用顺序存储结构。定义一个类型为STUDENT的一维数组stu,最大元素个数为100.

#define MAXSIZE 100

STUDENT stu[MAXSIZE];

(3)函数声明。题目中有5问,声明5个函数。

●输入所有学生的信息,建立学生表。

void InputStu(STUDENT stu[],int n);

●输出所有学生的信息。

void OutputStu(STUDENT stu[],int n);

●查找:在学生表中查找指定学生的信息,如果找到就显示该生的所有信息,否则显

示“该学生的信息不存在,查找失败”。

void SearchStu(STUDENT stu[],int n)

●修改:在学生表中修改指定学生的信息,然后显示所有学生信息,如果表中不存在

该生就显示“该生的信息不存在,修改失败”。

void UpdateStu(STUDENT stu[],int n)

●添加:在当前学生表的末尾添加一个记录(记录数增加1)

例如,添加记录为:4256033 吴强男 82 85 90

void AppendStu(STUDENT stu[],int *pn)

(4)函数调用。编写main函数。

void main(){

int n;

STUDENT stu[MAXSIZE];

int index;

printf("\n请输入学生记录个数n=");

scanf("%d",&n);

printf("请输入学生信息:\n");

InputStu(stu,n);

while(1){

printf("\n\t\t\t\t学生信息管理系统\n");

printf("\t1.显示学生信息\n");

printf("\t2.查找学生信息\n");

printf("\t3.修改学生信息\n");

printf("\t4.添加学生信息\n");

printf("\t请选择(1-4):");

scanf("%d",&index);

switch(index){

case 1:OutputStu(stu,n);break;

case 2:SearchStu(stu,n);break;

case 3:UpdateStu(stu,n);break;

case 4:AppendStu(stu,&n);break;

default:printf("\n输入有误,请重新输入!\n");

}

}

}

(5)操作函数的定义。5个自定义函数的定义。

void InputStu(STUDENT stu[],int n){

int i;

for(i=0;i

scanf("%d",&stu[i].num);

scanf("%s",&stu[i].name);

scanf("%s",&stu[i].sex);

scanf("%d",&stu[i].English);

scanf("%d",&stu[i].Computer);

scanf("%d",&stu[i].Math);

stu[i].total=stu[i].English+stu[i].Computer+stu[i].Math;

stu[i].average=stu[i].total/3.0;

}

}

void OutputStu(STUDENT stu[],int n){

int i=1;

STUDENT *p;

printf("\n序号\t学号\t姓名\t性别\t英语\t计算机\t高数\t总分\t平均分\n");

for(p=&stu[0];p

printf("%d\t",i++);

printf("%d\t",p->num);

printf("%s\t",p->name);

printf("%s\t",p->sex);

printf("%d\t",p->English);

printf("%d\t",p->Computer);

printf("%d\t",p->Math);

printf("%d\t",p->total);

printf("%0.2f\t",p->average);

printf("\n");

}

}

void SearchStu(STUDENT stu[],int n){

int x;

printf("\n请输入待查找的学号:");

scanf("%d",&x);

for(int i=0;i

if(stu[i].num==x){

printf("\n查找成功\n");

break;

}

}

if(i

printf("\n学号\t姓名\t性别\t英语\t计算机\t高数\t总分\t平均分\n");

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,

相关文档
最新文档