标签:fp total 文本文件 double 学生名单 dat score stud C语言
返回:贺老师课程教学链接
【项目2-用文本文件保存的学生名单】
文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。
(1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。
//定义学生结构体
typedef struct
{
string name;
double cpp;
double math;
double english;
double total;
}Student
(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。
int main( ){
Student stud[200],t; //stud[200]为保存数据的对象数组
//从文件score.dat中读入数据,保存到对象数组中
//总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
return 0;
}
[参考解答]
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char num[13];
char name[10];
double c;
double math;
double english;
double total;
} Student;
int pass(Student); //判断一个学生的各门课是否通过
int main( )
{
Student stud[200]; //stud[200]为保存数据的对象数组
int stu_num=0, total_sum=0, i=0;
//从文件score.dat中读入数据,保存到对象数组中
FILE *fp;
if((fp=fopen("score.dat","r"))==NULL)
{
printf("数据文件不存在!\n");
exit(1);
}
while(!feof(fp))
{
fscanf(fp, "%s %s", stud[i].num, stud[i].name);
fscanf(fp, "%lf %lf %lf", &stud[i].c,&stud[i].math, &stud[i].english);
stud[i].total=stud[i].c+stud[i].math+stud[i].english;
stu_num++; //在读入数据过程中,记录下来具体的学生人数和总分和
total_sum+=stud[i].total;
i++;
}
fclose(fp);
//总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
if(stu_num>0)
{
double total_avg = total_sum / stu_num;
fp=fopen("pass_score.dat","w");
if(!fp)
{
printf("无法输出到文件!\n");
exit(1);
}
for(i=0; i<stu_num; i++)
{
if(stud[i].total>total_avg&&pass(stud[i]))
{
fprintf(fp, "%s\t%s\t", stud[i].num, stud[i].name);
fprintf(fp, "%.2lf\t%.2lf\t%.2lf\t", stud[i].c,stud[i].math, stud[i].english);
fprintf(fp, "%.2lf\n", stud[i].total);
}
}
fclose(fp);
printf("请到文件pass_score.dat中查看名单\n");
}
return 0;
}
int pass(Student s) //判断一个学生的各门课是否通过
{
int p=0;
if(s.c>=60 &&s.english>=60&&s.math>=60)
p=1;
return p;
}
标签:fp,total,文本文件,double,学生名单,dat,score,stud,C语言 来源: https://blog.51cto.com/sxhelijian/2814818
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。