一条学生记录包括学号、姓名、成绩。 1 格式化输入多个学生记录 2 用fwrite将学生信息按二进制写入文件 3

3,用fread读取记录并按成绩排序后写回文件。只要c写的,c++不要,有适量注释最好!谢了!!... 3,用fread读取记录并按成绩排序后写回文件。
只要c写的,c++不要,有适量注释最好!谢了!!
展开
 我来答
饕餮的神兽dS
推荐于2017-10-03
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4 //定义学生成员的个数
//定义学生成员结构体
struct student
{
int stu_NO;
char name[15];
int score;
} stu[SIZE];
//排序qsort调用子函数(结构体型元素排序)
int cmp(const void *a,const void *b)
{
return((struct student*)a)->score-((struct student*)b)->score;
}
//用于将学生信息保存到stu_list文件中
void save()
{
FILE *fp;
int i;
if ((fp = fopen("stu_list.txt","wb")) == NULL)
{
printf("Cannot open file\n");
exit(0);
}

for (i=0;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");

fclose(fp);
}

void main()
{
FILE *fp;
int i;
//用于对学生成员信息统计
for (i=0;i<SIZE;i++)
{
scanf("%d%s%d",&stu[i].stu_NO,stu[i].name,&stu[i].score);
}
//用于将统计后的学生信息保存到stu_list
save();
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
// printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
qsort((void *)stu,SIZE,sizeof(stu[0]),cmp);
fclose(fp);
//将成绩排序后的学生信息保存到stu_list
save();
//用于检测最后stu_list文件中的信息
fp = fopen("stu_list.txt","rb");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%d %s %d\n",stu[i].stu_NO,stu[i].name,stu[i].score);
}
fclose(fp);
}

已经编译通过 楼主可以检查一下。。。
Lsin30
2010-12-08 · 超过16用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:47.4万
展开全部
C++的引用很方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七月流光1
2010-12-05 · TA获得超过528个赞
知道小有建树答主
回答量:339
采纳率:100%
帮助的人:191万
展开全部
我空间里有个学生成绩管理系统,你可以看看,或许对你有作用。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式