从文件中读取学生信息,排序后存放到新的文件stu_sort中

#include<stdio.h>
#include<stdlib.h>
#define M 6
#define N 3
struct student{
	int num;
	char name[20];
	float score[3];
	float ave;
}cla2[M],cla1[M],st1;
void main(){
	FILE *fp;
	int i,j;
	if((fp = fopen("stu","rb")) == NULL){
		printf("ERROR 201!\n");
		exit(0);
	}
	printf("排序之前的数据:\n");
	for(i = 0;i < M;i++){
		fread(&cla2[i],sizeof(struct student),1,fp);
		printf("%-5d,%-7s",cla2[i].num,cla2[i].name);
		for(j = 0;j < N;j++)
			printf("%-6.2f",cla2[i].score[j]);
		printf("%-6.2f",cla2[i].ave);
		printf("\n");
	}
	fclose(fp);
	for(i = 0;i < M-1;i++)
		for(j = i+1;j < M;j++)
			if(cla2[i].ave < cla2[j].ave){
				st1 = cla2[i];
				cla2[i] = cla2[j];
				cla2[j] = st1;
			}
	if((fp = fopen("stu_sort","wb")) == NULL){
		printf("ERROR 202!\n");
		exit(0);
	}
	for(i = 0;i < M;i++){
		fwrite(&cla2[i],sizeof(struct student),1,fp);
	}	
	fclose(fp);
	if((fp = fopen("stu_sort","rb")) == NULL){
		printf("ERROR 201!\n");
		exit(0);
	}
	printf("排序之后的数据:\n");
	for(i = 0;i < M;i++){
		fread(&cla1[i],sizeof(struct student),1,fp);
		printf("%-5d,%-7s",cla1[i].num,cla1[i].name);
		for(j = 0;j < N;j++)
			printf("%-6.2f",cla1[i].score[j]);
		printf("%-6.2f",cla1[i].ave);
		printf("\n");
	}
}

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目1:写一个函数计算下列函数的值f(0),f(3),f(-3)。测试之 目2:写一个函数可以打印下面的图案 * *** ***** ******* ***** *** * 要求每个打印语句只打印一个*号 ,测试之 目3:写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据的最大值、最小值和平均值,测试之。其data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。 要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之 目4 写一个函数用指针型字符串实现两个字符串比较,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,测试之 目5写一个函数求求圆周率的近视值,精确到小数7位。计算公式是 目6定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的平均值,函数原型为float ave(STU stu[],int size)。测试之。 目7 写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组。测试之 目8 写一个函数能够输出某一学生结构体数组STU stu[10]的信息和每个人的总分、平均分到某一文本文件,测试之。输出格式是: “%s %s %d %d %d %d %d %5.2f” 目9 写一个函数能够打印输出学生结构体数组STU stu[10]的信息到屏幕上,测试之 目10 写一个函数能够把一组学生成绩信息按总分进行排序,测试之。 目11 写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“not found!”.测试之。 目12 设计一个界面函数,包含上述11个目的调用,即 请选择 1 调用第一个函数(具体的函数名) 2 调用第二个函数(具体的函数名) 3 4 。。。 。。。 5 10 调用第10个函数(具体的函数名) 继续吗?输入y继续下一次选择,输入n结束 目13 创建一个工程文件,包含三个文件,第一个是主函数所在的源文件,含有显示界面,选择1-10,调用不同的函数,第二个是各个函数所在的源文件,第三个是各个函数原型所在的头文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值