【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

这篇具有很好参考价值的文章主要介绍了【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

(1)有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

设5名学生的学号、姓名和3门课成绩如下:

【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。

编写程序:

#include<stdio.h>
#include<stdlib.h>
#define N 5
struct Student{		//定义结构体 
	char id[10];		//学号 
	char name[10];		//姓名 
	float score[3];		//3科成绩 
	float ave;			//平均分 
}stu[N];				//定义结构体数组 
/*-----学生信息输入函数------*/
void input(void){
	int i,j; 
	for(i=0;i<N;i++){
		printf("输入第%d个学生信息:\n",i+1);
	scanf("%s %s %f %f %f",&stu[i].id,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);		//接收学生信息 
		stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;	//计算每个学生平均分 
	}
}
/*-----学生信息写入文件函数----*/
void wri(void){
	FILE *fp;				//定义文件指针 
	int i;
	fp=fopen("stud","w");	//为了输出数据,打开一个文件,若么有该文件就新建一个 
	for(i=0;i<N;i++)
		if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1){	//写入数据信息 
			printf("\n写入错误!!!\n");
			exit(0);				 
		}
	fp=fopen("stud","r");		//打开刚才的文件 
	puts("----------------------------------------------");
	puts("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分");		//表头样式 
	puts("----------------------------------------------");
	for(i=0;i<N;i++){
		fread(&stu[i],sizeof(struct Student),1,fp);	//每次读取fp所指文件中的长度为sizeof所得字节数的数据项 
	printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave); 		//输出刚才写入文件的信息	
	}
	fclose(fp);
}
int main(){
	input();		//调用学生信息输入函数 
	wri();			//调用学生信息写入文件函数
	return 0;
}

 程序运行结果:程序运行生成了一个名为stud(    【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。    )的文件,并将输入的

 信息写入了这个文件。

【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
(2)将上题stud文件中的学生数据按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中。在向文件stu_sort写入数据后,应检查验证stu_sort文件中的内容是否正确。

 编写程序

#include<stdio.h>
#include<stdlib.h>
#define N 5
struct Student{		//定义结构体 
	char id[10];		//学号 
	char name[10];		//姓名 
	float score[3];		//3科成绩 
	float ave;			//平均分 
}stu[N],temp;			//定义结构体数组,和一个结构体变量 
/*---对上次文件中的数据排序函数--*/
void stu_sort(){
	FILE *fp;					//定义文件指针 
	int i,j,count=0,max;		 
	fp=fopen("stud","r");		//以度的方式打开刚才的文件 
	puts("原来的:");
	puts("----------------------------------------------");
	puts("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分");		//表头样式 
	puts("----------------------------------------------");
	for(i=0;i<N;i++){
		fread(&stu[i],sizeof(struct Student),1,fp);	//每次读取fp所指文件中的长度为sizeof所得字节数的数据项 
	printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave); //输出所读原来的内容 
	}
	//冒泡排序 
	for(j=0;j<N;j++)
		for(i=0;i<N-j-1;i++)
			if(stu[i].ave<stu[i+1].ave){
				temp=stu[i+1];
				stu[i+1]=stu[i];
				stu[i]=temp;
			}
	fp=fopen("stu_sort","w");			//将排好序的结构体数组写入新的文件中 
	for(i=0;i<N;i++)	
		if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1){			//写入数据信息 
			printf("\n写入错误!!!\n");
			exit(0);				 
		}
	fp=fopen("stu_sort","r");		//再次打开需要将信息排序的的文件 
	puts("\n现在的:"); 
	puts("----------------------------------------------");
	puts("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分");		//表头样式 
	puts("----------------------------------------------");
	for(i=0;i<N;i++){
		fread(&stu[i],sizeof(struct Student),1,fp);		//每次读取fp所指文件中的长度为sizeof所得字节数的数据项 
	printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave); //输出排序好的数组	
	}
	fclose(fp);		//关闭文件 
}
int main() {
	stu_sort();		//调用文件内容排序函数 
	return 0;
}

程序运行结果:程序运行生成了一个名为stu_sort(    【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。       )的文件,并将输入的信息写入了这个文件。

【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

  (3)将上题已排序的学生成绩文件进行插入处理。插入一个学生的3门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。 在向新文件stu_new写入数据后,应检查验证stu_new文件中的内容是否正确

要插入的学生数据为:

【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

 编写程序:

#include<stdio.h>
#include<stdlib.h>
#define N 6			//原来的5人再加1人 
struct Student{		//定义结构体 
	char id[10];		//学号 
	char name[10];		//姓名 
	float score[3];		//3科成绩 
	float ave;			//平均分 
}stu[N],temp;			//定义结构体数组,和一个结构体变量 
/*----插入排序队列函数----*/
void stu_sort_new(struct Student stu0){
	FILE *fp;					//定义文件指针 
	int i,count; 
	fp=fopen("stu_sort","r");	//读入刚才内容排好序的文件 
	puts("原来的:");
	puts("----------------------------------------------");
	puts("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分");		//表头样式 
	puts("----------------------------------------------");
	for(i=0;i<N-1;i++){				//因为原来只有五人,所以这次只读入N-1=5人 
		fread(&stu[i],sizeof(struct Student),1,fp);	//每次读取fp所指文件中的长度为sizeof所得字节数的数据项 
	printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave); 		//输出所读原来的内容 
	}
	//将原来文件中的个数据项的平均分和传入的数据的平均分项对比,找出应该插入位置 
	for(i=0;i<N-1;i++)			//因为现在数组只有五个人的信息,所以不用检查数组尾部了
		if(stu0.ave>stu[i].ave){
			count=i; 		//记录插入位置 
			break;
		}
	for(i=N-1;i>=count;i--)
		stu[i]=stu[i-1];		//将插入位置及其后的数据向后挪 
	stu[count]=stu0;
	fp=fopen("stu_new","w");		//再次打开需要将信息排序的的文件 
	for(i=0;i<N;i++)	
		if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1){	  //写入数据信息 
			printf("\n写入错误!!!\n");
			exit(0);
		}
	fp=fopen("stu_new","r");		//再次打开需要将信息排序的的文件,检查其中的内容 
	puts("\n现在的:"); 
	puts("----------------------------------------------");
	puts("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分");		//表头样式 
	puts("----------------------------------------------");
	for(i=0;i<N;i++){
		fread(&stu[i],sizeof(struct Student),1,fp);	//每次读取fp所指文件中的长度为sizeof所得字节数的数据项 
	printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);			 //输出内容重新排序好的文件内容 
	}
	fclose(fp);		//关闭文件 
} 
int main(){
	struct Student stu0;		//定义需要结构体变量 
	printf("输入要插入的学生信息:\n");
	scanf("%s %s %f %f %f",&stu0.id,&stu0.name,&stu0.score[0],&stu0.score[1],&stu0.score[2]);
	stu0.ave=(stu0.score[0]+stu0.score[1]+stu0.score[2])/3;		//计算平均分 
	stu_sort_new(stu0);			//调用插入排序队列函数 
	return 0;	
}

程序运行结果:程序运行生成了一个名为stu_new( 【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。 )的文件,并将输入的信息写入了这个文件。

【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。文章来源地址https://www.toymoban.com/news/detail-441500.html

到了这里,关于【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言7:输入若干个学生的成绩,统计出平均成绩

    在程序编辑区编写程序,给定程序功能是: 从键盘上输入若干个学生的成绩,统计出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。 例如输入: 70  80  90  -1 输出: ave =80.00 --------OUTPUT----------- 70.0 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果

    2024年02月06日
    浏览(45)
  • C语言:输入学生信息(学号姓名成绩)并按成绩高低升序输出

    定义学生结构体Student(含学号、姓名、成绩)和排序函数sort,该函数使用冒泡排序法按成绩升序排序。在主函数中输入5个学生的学号、姓名和成绩,调用sort函数对学生数据排序,最后输出排序后的学生全部信息。 结构体数组的元素输入输出。 结构体作为参数传递。 冒泡排序

    2024年02月12日
    浏览(37)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(53)
  • C语言程序设计:某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。

    题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数) 输入格式: %ld %s %f %f %f 输出格式: %-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-dn 输入样例:

    2024年02月02日
    浏览(46)
  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(41)
  • C++课程设计——学生成绩管理系统

    今天清理电脑偶尔发现一个我刚学编程时用c++写的一份课程设计,使用到简单的链表,结构体,c++类与对象的知识——学生成绩管理系统。 ~~ 系统结构: 管理员模式 教师模式 学生模式 实现了对学生成绩及信息的增删改查以及排序。 效果图 主菜单 管理员模式菜单 源代码

    2024年02月16日
    浏览(40)
  • Java课程设计——学生成绩管理系统

    1 需求分析 1.1 需求分析概述 需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等, 为系统设计

    2024年02月03日
    浏览(77)
  • 数据结构课程设计:学生成绩管理系统

    目  录 第一章   需求分析 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 安装及使用 第六章 项目总结 第七章 源码 一.需求分析        学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好

    2024年02月02日
    浏览(70)
  • 【python课程作业】python学生成绩管理系统

    功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_score 演示地址 http:/

    2024年03月13日
    浏览(71)
  • 48基于java的学生课程成绩系统设计与实现

    本章节给大家带来一个基于java的学生课程成绩管理系统设计与实现,可适用于学生学生课程管理系统,学生成绩管理系统,教务课程管理系统,教务系统,成绩系统,课程系统,校园管理系统,校园课程管理系统,大学校园课程管理系统等等。 学生成绩管理系统是学校日常

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包