C语言编写一个能计算学生平均成绩并保存为文件的程序。
某教师承担了某个班的教学工作,在一次测试之后,教师通常要把学生的成绩录入到计算机中保存起来,然后计算他所教班级的学生该课程的平均成绩值,试给教师写一个程序完成这样的工作。
注:先从in.txt读取数据,在q.c进行计算后,再输出数据到out.txt。
例如:
in.txt:65 65 65
out.txt:3 65.0
非标准答案,仅供参考!谢谢!
#include<stdio.h>
// 打开文件读取各个分数累加到total
// 返回学生人数n
size_t getsdataTo(FILE * in, double *total)
{
if (!in)
return 0;
double tmp;
size_t n = 0;
while (!feof(in))
{
if (fscanf(in, "%lf", &tmp) == 1);
{
*total += tmp;
n++;
}
}
return n;
}
int main()
{
char inF[]="in.txt";
char outF[]="out.txt";
size_t n=0; //考生人数
double avg=0.0; //平均分
double total=0.0;//总分
FILE *in=fopen(inF,"r");
FILE *out=fopen(outF,"w");
if(!in || !out)return -1;
//开始读取各个考生分数累加到total
n=getsdataTo(in, &total);
//计算平均分
if(n!=0)
avg=total/n;
//考生人数和平均分写到输出文件outF
fprintf(out, "%u %.1lf", n, avg);
fclose(in);
fclose(out);
return 0;
}
C语言如何读取txt文件
https://blog.csdn.net/weixin_37615774/article/details/120591665?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166161549416780357221372%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166161549416780357221372&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-120591665-null-null.142^v42^control,185^v2^tag_show&utm_term=c%E8%AF%AD%E8%A8%80%E8%AF%BB%E5%8F%96txt%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4187
C语言计算平均分
https://blog.csdn.net/m0_47557768/article/details/106302907?ops_request_misc=&request_id=&biz_id=102&utm_term=c%E8%AF%AD%E8%A8%80%E6%B1%82%E5%AD%A6%E7%94%9F%E5%B9%B3%E5%9D%87%E5%88%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-106302907.142^v42^control,185^v2^tag_show&spm=1018.2226.3001.4187
C语言实现数据写入文件
https://blog.csdn.net/jchsns007/article/details/104969959?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166161565016782414992851%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166161565016782414992851&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-104969959-null-null.142^v42^control,185^v2^tag_show&utm_term=c%E8%AF%AD%E8%A8%80%E5%86%99%E5%85%A5txt%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4187