问题描述
- 学生顺序表的处理。。。看清楚是顺序表!!!
-
课题内容:
在一个数据文件中存放若干学生数据记录,每条记录都有如下数据项:学号,姓名,性别,成绩。
编一个程序,采用 顺序存储结构 存储这批数据,并对该数据进行排序。要求:数组前部为男同学,后部为女同学,并且男女同学都按成绩递减排序,分别计算男生合格率、女生合格率、全班的成绩平均分,并把排序后的学生数据记录及计算结果存入另一个数据文件中。
先用一个Seqlist.cpp定义学生成绩信息顺序表的类型和基本运算函数
#include
#include
#define MAX 50
typedef struct{
int xh; /*学号*/
char name[20]; /*姓名*/
int sex; /*性别,0为男生,1为女生*/
float score; /*成绩*/
}datatype;
typedef struct{
datatype data[MAX];/*存放顺序表元素的数组*/
int last; /*表示data中实际存放元素个数*/
}Seqlist;void initList(Seqlist lp);/置一个空表*/
void createList(Seqlist lp);/建一个学生顺序表*/
void sort_score(Seqlist lp);/按成绩排降序*/
void Error(char s);/自定义错误处理函数*/
void pntList(Seqlist lp);/输出学生顺序表*/
void save(Seqlist lp,char strname[]);/保存学生顺序表到指定文件*//*置一个空表*/
void initList(Seqlist lp)
{lp->last=0;
}
/建一个学生顺序表*/
void createList(Seqlist lp)
{ FILE *fp;
int xh,sex;
char name;
float score;
if((fp=fopen("records.txt","r"))==NULL)
{Error("can not open file !");
}
while(!feof(fp))
{fscanf(fp,"%d%f%s%d",&xh,name,&score,&sex);
lp->data[lp->last].xh=xh;
lp->data[lp->last].score=score;
lp->data[lp->last].sex=sex;
lp->last++;
}
fclose(fp);
}
/按成绩排降序*/
void sort_score(Seqlist lp)
{
int i,j,k;
datatype t;
for(i=1;ilast;i++)
{
k=i;
for(j=i+1;j<=lp->last;j++)
if(lp->data[j].score>lp->data[k].score) k=j;
if(k!=i)
{
t=lp->data[k];
lp->data[k]=lp->data[i];
lp->data[i]=t;
}
}
}
/自定义错误处理函数*/
void Error(char s)
{
printf("n %s", s);
exit(1); /返回OS,该函数定义在stdlib.h中*/
}
/*输出学生顺序表*/
void pntList(Seqlist lp)
{ int i;
for(i=0;ilast;i++)
printf("%2d: %s %5.2f %dn",lp->data[i].xh,lp->data[i].name,lp->data[i].score,lp->data[i].sex);
}
/保存学生顺序表到指定文件*/
void save(Seqlist *lp,char strname[])
{FILE *fp;
int i;
if((fp=fopen(strname,"w"))==NULL)
{Error("can not open file !");
}
for(i=0;ilast ;i++)
{fprintf(fp,"%2d %s %5.2f %dn",lp->data[i].xh,lp->data[i].name,lp->data[i].score,lp->data[i].sex);
}
fclose(fp);
}接下去的主函数要调用Seqlist.cpp,请问接下去的主函数怎么写(给出相关函数,手写有50C币)
解决方案
include 后面分别是stdio.h和stdlib.h
解决方案二:
楼主您的代码里面错误不少,请仔细检查!
解决方案三:
include 后面分别是stdio.h和stdlib.h
解决方案四:
include 后面分别是stdio.h和stdlib.h