C语言-文件的基本操作

不是很懂,帮忙解决一下!

要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。
1.建立下列学生编号、姓名及数学、语文、英语3门课程成绩的输入数据的文本文件inData.txt(不含标题栏):
Num Name Math Chinese English
05040001 Zhang 90 89 91
05040002 Li 91 78 67
05040003 wang 67 60 78
05040004 Zhu 100 99 94
05040005 Tang 84 67 59
2. 编写C程序完成下列任务:
从inData.txt把数据读入结构体数组stu中。
计算出每个学生的平均成绩
将结果以下列形式输出到文本文件outData.txt中:
Num Name Math Chinese English Average
05040001 Zhang 90 89 91 90
05040002 Li 91 78 67 79
05040003 Wang 67 60 78 68
05040004 Zhu 100 99 94 98
05040005 Tang 84 67 59 70
3.调试程序,验证程序的正确性(查看是否建立了outData.txt;若已建立,则打开检查是否符合要求)

/* 写了个,VC++下编译通过,运行可用,只是平均值求得有点不一样,应该没什么关系吧。。。
以下是我输出的:
05040001 Zhang 90 89 91 90
05040002 Li 91 78 67 78
05040003 wang 67 60 78 68
05040004 Zhu 100 99 94 97
05040005 Tang 84 67 59 70 */

#include<stdio.h>
#include<stdlib.h>

struct student
{
char no[9]; //学号
char name[10];
int math,chinese,english; //三门课程的成绩
int avr; //平均成绩
};

struct student STU[50];

int readDat()
{
FILE *fp;
int i = 0;
if((fp = fopen("inData.txt","r")) == NULL)
{
printf("文件打开错误!\n");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s%s%d%d%d",STU[i].no,STU[i].name,&STU[i].math,&STU[i].chinese,&STU[i].english);
i++;
}
fclose(fp);
return i-1;
}

void calValue(int n)
{
int i;
for(i=0; i<n; i++)
STU[i].avr = (STU[i].math + STU[i].chinese + STU[i].english)/3;
}

void writeDat(int n)
{
FILE *fp;
int i;
if((fp = fopen("outData.txt","w")) == NULL)
{
printf("文件打开错误!\n");
exit(1);
}
for(i=0; i<n; i++)
fprintf(fp,"%s %s %d %d %d %d\n",STU[i].no,STU[i].name,STU[i].math,STU[i].chinese,STU[i].english,STU[i].avr);
fclose(fp);
}

void main()
{
int num;
num = readDat(); //读取文件
calValue(num); //计算平均值
writeDat(num); //写入文件
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-18
你什么不懂呢?这个比较简单啊,找一本c语言的书看一下就可以搞定阿。
第2个回答  2008-06-18
作业题,不帮。
相似回答