题目:
(1)有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
设5名学生的学号、姓名和3门课成绩如下:
在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。
编写程序:
#include#include #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 程序运行结果:程序运行生成了一个名为stud( )的文件,并将输入的
信息写入了这个文件。
(2)将上题stud文件中的学生数据按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中。在向文件stu_sort写入数据后,应检查验证stu_sort文件中的内容是否正确。编写程序:
#include#include #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成绩1t成绩2t成绩3t平均分"); //表头样式 puts("----------------------------------------------"); for(i=0;i 程序运行结果:程序运行生成了一个名为stu_sort( )的文件,并将输入的信息写入了这个文件。
(3)将上题已排序的学生成绩文件进行插入处理。插入一个学生的3门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。 在向新文件stu_new写入数据后,应检查验证stu_new文件中的内容是否正确
要插入的学生数据为:
编写程序:
#include#include #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成绩1t成绩2t成绩3t平均分"); //表头样式 puts("----------------------------------------------"); for(i=0;i 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 程序运行结果:程序运行生成了一个名为stu_new( )的文件,并将输入的信息写入了这个文件。



