将10名学生的数据存在文件中,编写程序从文件读取数据,并将结果写入文件,用c语言
答案:1 悬赏:60 手机版
解决时间 2021-01-18 06:33
- 提问者网友:我们很暧昧
- 2021-01-18 01:26
将10名学生的数据存在文件中,编写程序从文件读取数据,并将结果写入文件,用c语言
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-01-18 02:57
我这有两段代码,分别是读取和写入,你看看吧
//读数 readFile.c
#include
#include
#define N 20
struct stud
{
int num;
int sco1;
int sco2;
int sco3;
}stu[N];
void main()
{
FILE *fp;
double ave;
int i=0,x;
if((fp=fopen("STUDENT.DAT","r"))==NULL)
{
printf("无法打开该文件!
");
exit(0);
}
else
printf("文件打开成功!
");
for(i=0;i fread(&stu[i],sizeof(struct stud),1,fp);//stu改为&stu[i],因为地址始终没变,所以只有一条数据
i++;
}
fclose(fp);
printf("请输入要查找的学生学号:
");
scanf("%d",&x);
for(i=0;i {
if(x==stu[i].num)
{
ave=(double)(stu[i].sco1+stu[i].sco2+stu[i].sco3)/3.0;
break;
}
else
i++;
}
if(i==10||ave<0||ave>100)
printf("查无该生成绩!
");
else
printf("该生平均成绩为:%.2lf
",ave);
}
//存数 writeFile.c
#include
#include
#define N 20
struct stud
{
int num;
int sco1;
int sco2;
int sco3;
}stu[N];
void main()
{
FILE *fp;
int i,n;
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0;
if((fp=fopen("STUDENT.DAT","wb"))==NULL)
{
printf("无法打开该文件!
");
exit(0);
}
else
printf("文件打开成功!
");
printf("请输入要输入的学生数:
");
scanf("%d",&n);
for(i=0;i {
printf("请输入学生学号,数学成绩,政治成绩和英语成绩:
");
scanf("%d%d%d%d/n",&stu[i].num,&stu[i].sco1,&stu[i].sco2,&stu[i].sco3);
sum1+=stu[i].sco1;
sum2+=stu[i].sco2;
sum3+=stu[i].sco3;
if(fwrite(&stu[i],sizeof(struct stud),1,fp)!=1)
printf("file write error
");
}
fclose(fp);
ave1=sum1/n;
ave2=sum2/n;
ave3=sum3/n;
printf("------------------------------------
");
printf("NUM Math Prolitics English
");
for(i=0;i {
printf("%d%7d%10d%14d
",stu[i].num,stu[i].sco1,stu[i].sco2,stu[i].sco3);
}
printf("------------------------------------
");
printf("对应三门成绩均分为:
");
printf(" %7.2f%10.2f%14.2f
",ave1,ave2,ave3);
}
//读数 readFile.c
#include
#include
#define N 20
struct stud
{
int num;
int sco1;
int sco2;
int sco3;
}stu[N];
void main()
{
FILE *fp;
double ave;
int i=0,x;
if((fp=fopen("STUDENT.DAT","r"))==NULL)
{
printf("无法打开该文件!
");
exit(0);
}
else
printf("文件打开成功!
");
for(i=0;i
i++;
}
fclose(fp);
printf("请输入要查找的学生学号:
");
scanf("%d",&x);
for(i=0;i
if(x==stu[i].num)
{
ave=(double)(stu[i].sco1+stu[i].sco2+stu[i].sco3)/3.0;
break;
}
else
i++;
}
if(i==10||ave<0||ave>100)
printf("查无该生成绩!
");
else
printf("该生平均成绩为:%.2lf
",ave);
}
//存数 writeFile.c
#include
#include
#define N 20
struct stud
{
int num;
int sco1;
int sco2;
int sco3;
}stu[N];
void main()
{
FILE *fp;
int i,n;
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0;
if((fp=fopen("STUDENT.DAT","wb"))==NULL)
{
printf("无法打开该文件!
");
exit(0);
}
else
printf("文件打开成功!
");
printf("请输入要输入的学生数:
");
scanf("%d",&n);
for(i=0;i
printf("请输入学生学号,数学成绩,政治成绩和英语成绩:
");
scanf("%d%d%d%d/n",&stu[i].num,&stu[i].sco1,&stu[i].sco2,&stu[i].sco3);
sum1+=stu[i].sco1;
sum2+=stu[i].sco2;
sum3+=stu[i].sco3;
if(fwrite(&stu[i],sizeof(struct stud),1,fp)!=1)
printf("file write error
");
}
fclose(fp);
ave1=sum1/n;
ave2=sum2/n;
ave3=sum3/n;
printf("------------------------------------
");
printf("NUM Math Prolitics English
");
for(i=0;i
printf("%d%7d%10d%14d
",stu[i].num,stu[i].sco1,stu[i].sco2,stu[i].sco3);
}
printf("------------------------------------
");
printf("对应三门成绩均分为:
");
printf(" %7.2f%10.2f%14.2f
",ave1,ave2,ave3);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯