实验二实验报告
功能:对原lp学生表拆分成男生身高表lpm与女生身高表lpfm
2.sy2.cpp源程序清单(含必要的注释)
#include "seqlist.cpp"
void insertX(Seqlist *lp,datatype x);/*表中插入值为x的学生*/
void reverse(Seqlist *lp);/*将表倒置*/
lp->data[i]=lp->data[lp->last-i-1]; /*两元素交换*/
lp->data[lp->last-i-1]=x;
i++;
}
pntList(lp);
}
int count(Seqlist *lp,float y)
{
int i,k=0;
for(i=0;i<lp->last;i++)
Seqlist lpfm;/*定义结构变量*/
datatype x;/*定义插入学生的数组下标*/
char strname[]="result.txt";/*定义保存学生顺序表的文件名*/
float sg;
initList(&lp);
createList(&lp);
pntList(&lp);/*把学生身高信息表并输出到屏幕,学生信息从records.txt文件读取*/
if(lp->data[i].sg==y)
k++;
return k;
}
void split(Seqlist *lp,Seqlist *lpm,Seqlist *lpfm)
{
int i=0,j=0,k;
for(k=0;k<lp->last;k++) /*扫描原表*/
{
if(lp->data[k].sex==0)
(2)void reverse(Seqlist *lp)
功能:对lp指向的顺序表进行倒置操作
(3)int count(Seqlist *lp,floaty)
功能:统计学生表中身高值为y的学生数并返回
(4)void split(Seqlist *lp,Seqlist *lpm,Seqlist *lpfm)
从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕;
将原学生表拆分为男生身高信息表和女生身高信息表,分别输出在屏幕上。
在程序文件sy2.cpp需再定义以下四个功能函数:
(1)voidinsertX(Seqlist *lp,datatype x)
功能:在学号从小到大排序的学生表中插入值为x的学生仍保持学号的有序性
insertX(&lp,x);/*插入后,保持学号的有序性*/
reverse(&lp);/*对插入后的学生身高信息表进行倒置,结果输出在屏幕*/
printf("\n输入身高:");
scanf("%f",&sg);
printf("身高为%.2f的有%d人\n",sg,count(&lp,sg));/*调用函数,统计与该身高相同的学生个数*/
sort_xh(&lp);
save(&lp,strname);/*对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中*/
printf("\n输入学号身高性别(男:0,女:1):");
scanf("%d %f %d",&x.xh,&x.sg,&x.sex);/*从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中*/
split(&lp,&lpm,&lpfm);/*将原学生表拆分为男生身高信息表和女生身高信息表*/
printf("\n男表\n");
pntList(&lpm);/*输出男表*/
printf("\n女表\n");
pntList(&lpfm);/*输出女表*/
}
void insertX(Seqlist *lp,datatype x)
typedef struct {
int xh; /*学号*/
float sg; /*身高*/
int sex; /*性别,0为男生,1为女生*/
} datatype;
typedef struct{
datatype data[MAX]; /*存放顺序表元素的数组*/
int last; /*表示data中实际存放元素个数*/
lp->data[j]=lp->data[j-1]; /*目标下标之后元素向后移一位*/
lp->data[i]=x;
lp->last++;
}
void reverse(Seqlist *lp)
{
datatype x;
int i=0;
while(i<lp->last-i-1)
{
x=lp->data[i];
int count(Seqlist *lp,float y);/*统计学生表中身高值为y的学生数量*/
void split(Seqlist *lp, Seqlist *lpm, Seqlist *lpfm);/*将表拆分成男生表和女生表*/
void main()
{
Seqlist lp;
Seqlist lpm;
{
lpm->data[i]=lp->data[k]; /*男生表*/
i++;
}
else
{
lpfm->data[j]=lp->data[k]; /*女生表*/
j++;
}
}
lpm->last=i;
lpfm->last=j;
}
3.程序运行结果的屏幕拷贝及数据文件result.txt内容
实验
程序调试中出现的问题及解决方法,心得体会等
创建一个包含学生学号、身高、性别的学生身高信息表并输出到屏幕,学生信息从records.txt文件读取;
对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt);
从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后仍然保持学号的有序性;
对插入后的学生身高信息表进行倒置,结果输出在屏幕;
void pntList(Seqlist *lp);/*输出学生表*/
void save(Seqlist *lp,char strname[]);/*保存学生顺序表到指定文件*/
任务
阅读程序seqlist.cpp(见电子文档),理解顺序表类型Seqlist和基本运算函数。
任务二
1.题目要求
创建一个新的程序文件sy2.cpp,请调用seqlist.cpp提供的功能函数(以#include“seqlist.cpp”方式导入函数库)及自定义的函数完成以下操作:
}Seqlist;
(2)基本运算函数原型
void initList(Seqlist *lp);/*置一个空表*/
void createList(Seqlist *lp);/*建一个学生顺序表*/
void sort_xh(Seqlist *lp);/*按学号排序*/
void Error(char *s);/*自定义错误处理函数*/
{
int i=0,j;
char *a="列表已满",*b="插入位置不存在";
if(lp->last>=MAX)
Error(a);
while(lp->data[i].xh<=x.xh)
i++; /*寻找插入下标*/
if(i<0||i>lp->last)
Error(b);
for(j=lp->last;j>i;j--)
上海建桥学院
本科《数据结构》实验报告(二)课程名Βιβλιοθήκη :数据结构实验类型:
综合
实验室名称:
机房
开课系:
信息技术系
学生姓名:
专业:
学号:
指导老师:
实验日期:2011年9月日评阅成绩:
实验目的
1.
2.
3.
4.
实验内容
已知程序文件seqlist.cpp已给出学生身高信息顺序表的类型定义和基本运算函数定义。
(1)顺序表类型定义