(1)输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中; (2)将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中
来源:互联网 发布:网络兼职发帖 编辑:程序博客网 时间:2024/05/22 14:56
(1) 输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中;
(2) 将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中;
(3) 输入一个学生的基本信息,将该信息存入文件“stud_sort”中,使插入数据后仍按平均分排序,并保存在原文件“stud_sort”中;
(4) 输入一个学生的学号,在文件“stud_sort”中,将该生删除,其结果仍保存在原文件“stud_sort”中。
#include<stdio.h>
#include<stdlib.h>
#define N 3
typedef struct student{
int num;
char name[20];
float score[3];
float aver;
}S;
void input(S *pw){
int i,j;
FILE *fp;
if((fp=fopen("stud.dat","wb"))==NULL){
printf("can not open file.\n");
exit(0);
}
for(i=0;i<N;i++){
scanf("%d%s",&(pw->num),pw->name);
pw->aver=0;
for(j=0;j<3;j++){
scanf("%f",&(pw->score[j]));
pw->aver+=pw->score[j];
}
pw->aver/=3;
fwrite(pw,sizeof(S),1,fp);
}
fclose(fp);
}
void sort(){
int i,j,k;
S t;
FILE *fp,*fp1;
S stu[N];
if((fp=fopen("stud.dat","rb"))==NULL){
printf("can not open file.\n");
exit(0);
}
i=0;
while(!feof(fp)){
fread(&stu[i],sizeof(S),1,fp);
i++;
}
for (k=0;k<N-1;k++){
for (j=0;j<N-k-1;j++){
if (stu[j].aver<stu[j+1].aver){
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}//加个排序
if((fp1=fopen("stud_sort.dat","wb"))==NULL){
printf("can not open file.\n");
exit(0);
}
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(S),1,fp1);
fclose(fp);
fclose(fp1);
}
void insert_rec(S st){
int i;
FILE *fp;
S stu[N+1];
if((fp=fopen("stud_sort.dat","rb"))==NULL){
printf("can not open file.\n");
exit(0);
}
i=0;
while(!feof(fp)){
fread(&stu[i],sizeof(S),1,fp);
i++;
}
for(i=N;i>=0&&stu[i].aver<st.aver;i--)
stu[i+1]=stu[i];
stu[i+1]=st;
fclose(fp);
if((fp=fopen("stud_sort.dat","wb"))==NULL){
printf("can not open file.\n");
exit(0);
}
for(i=0;i<N+1;i++)
fwrite(&stu[i],sizeof(S),1,fp);
fclose(fp);
}
void delete_rec(int number){
int i,j;
FILE *fp;
S stu[N+1];
if((fp=fopen("stud_sort.dat","rb"))==NULL){
printf("can not open file.\n");
exit(0);
}
i=0;
while(!feof(fp)){
fread(&stu[i],sizeof(S),1,fp);
i++;
}
fclose(fp);
for(i=0;i<N;i++){
if(stu[i].num==number)
break;
for(j=i+1;j<N+1;j++)
stu[j-1]=stu[j];
}
if((fp=fopen("stud_sort.dat","wb"))==NULL){
printf("can not open file.\n");
exit(0);
}
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(S),1,fp);
}
int main(){
S a[N];
S st;
int i,j,k;
int number;
printf("请输入%d个学生的信息:\n",N);
printf("学号 姓名 三门课成绩\n");
for(i=0;i<N;i++){
scanf("%d%s",&a[i].num,&a[i].name);
for(j=0;j<3;j++){
scanf("%f",&a[i].score[j]);
}
}
input(a);
sort();
printf("再输入一个学生的信息:\n");
scanf("%d%s",&st.num,st.name);
for(k=0;k<3;k++){
scanf("%f",&st.score[k]);
}
insert_rec(st);
printf("输入要删除学生的学号:");
scanf("%d",&number);
delete_rec(number);
return 0;
}
- (1)输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中; (2)将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中
- 文件操作:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包 括学生号,姓名,三门课成绩),计算出平均成绩,将所输入有的数据和计算出 的平均分数存放在磁盘文件 "stud "中
- 用文件存储学生数据,有5个学生,每个学生有3门课程成绩,从键盘输入数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中
- 【程序50】 题目:有五个学生,每个学生有3门课的成绩,从键盘输入 以上数据(包括学生号,姓名,三门课成绩),计算出平均 成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
- java 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
- 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩), 计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
- 五十道编程小题目 --- 50 有五个学生,每个学生有3门课的成绩,计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中java
- 输入学生的姓名学号成绩,并按平均分由低到高排序
- 返回高于平均分的人数,并将高于平均分的分数存放到另外一个数组中
- 输入m个学生,每个学生有4门课,在主调函数中输入学生的相关信息,编写三个函数: (1)求第一门课的平均分; (2)找出有两门课以上不及格的学生,并输出他们的学号和全部成绩,要求用指针函数实现:fl
- 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写如下函数: (1)输入10个学生 的基本信息(input); (2)求出每个学生的平均分(average); (3)求出平均分
- 从文件中读取学生信息和分数,求出平均分后升序写入另一个文件。
- 输入三个班,每班10个学生的成绩,求和并求平均分(数组)
- 键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩,按总分由高到低 将学生的信息进行排列到文件中
- cpp: 学生成绩排序,计算平均分
- 三个学生,每人修四科,计算所有学生成绩的平均分,并输出某个学生的成绩
- 将学生信息保存到文件中,并读出文件内容
- 查询出“张”姓学生中平均成绩大于75分的学生信息
- IO操作——缓冲流(高级流,字节流)
- poj3111-K Best
- jquery实现只在第一次单击时处理函数
- linux c 一站式学习 怎样输出% \n "等特殊字符
- 这样的测试过程管理让你事半功倍
- (1)输入学生的基本信息,计算每个学生的平均分,并将学生信息存入磁盘文件“stud”中; (2)将文件stud中的数据按平均分从高到低的顺序进行排序,并将排序结果存放到文件“stud_sort”中
- 超全面的JavaWeb笔记day14<用户注册登录>
- fileupload上传各种方法的比较
- Linux安装Redis
- Java--注解
- 两行代码去掉顶部标题栏
- 陆历川的宝藏
- 洛谷P1081:开车旅行 (Treap+倍增)
- jquery组织默认行为事件