文件二进制读写学生信息

5个学生,输出3课成绩总分的最大分数的学生信息。

代码:

#include <stdio.h>
typedef struct student
{
	char id[10];
	char name[10];
	float cyy;
	float jsj;
	float eng;
}st;   // typedef关键字 将结构体重命名为 st
main()
{
	int i,c;
	float max,sum; //max是最大的分数,sum用来求每个学生分数和

    //定义文件指针fp
	FILE *fp;  
    
	//xs数组存放学生信息
	st x[100], xs[5]={{"0001","甲",50,50,40},{"0002","李四",60,60,60},{"0003","乙",70,75,77},{"0004","张三",60,70,80},{"0005","王五",90,80,70}};
   
	//wb打开新建文件,将学生信息写入文件中
	fp=fopen("c://xf163.dat","wb");
	fwrite(xs,sizeof(st),5,fp);
	fclose(fp);
	
	//rb从文件中读取出所有学生信息,放在x数组中
	fp=fopen("c://xf163.dat","rb");
	fread(x,sizeof(st),5,fp);
	fclose(fp);


	max = x[0].cyy + x[0].jsj + x[0].eng;
    c=0;
	//在x数组中算出每个学生3科成绩的总和,max存放最大分数,c记录最大分学生下标
	for (i=1;i<5;i++)
	{
		sum = x[i].cyy + x[i].jsj + x[i].eng;
		if(sum>max)
		{
			max=sum;
			c=i;
		}
	}
	//输出
	printf("%s\n%s\n%f\n%f\n%f\n总成绩:%f\n",x[c].id,x[c].name,x[c].cyy,x[c].jsj,x[c].eng,max);

}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值