恩,今天在看到有人问这个问题
题目是如下,代码可以大家一起学习一下。
1.编写一个程序,用来从键盘读取本班同学的期末成绩,并把该成绩保存在score.dat文件中。Score.dat文件内容如下:
number
   Chinese
   English
   C 
1
        87
        76
        67 
2
        67
        87
        65 
3
        76
        88
        87 
4
        46
        89
        88 
2.编写一个程序,用来读取上题创建的score.dat数据文件,并计算其平均成绩和期末总成绩。把计算的结果存在statistics.dat文件中,并输出成绩有不及格的学生的学号。其格式如下:
number Chinese English
   C
     total
   average
1
      87
      76
        67
    230
     76.67
2
      67
      87
        65
    219
     73
3
      76
      88
        87
    251
     83.67
4
      46
      89
        88
    223
     74.3

程序代码:
终于搞定!!!!
首先你的创建一个工程,然后创建一个.c文件,将下面的代码放入其中,其次你的创建两个.dat文件在工程中,文件名分别是score.dat和statistic.dat,score.dat文件用于将存放你输入的学生成绩,另一个用于保存处理后的成绩单
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <stdlib.h>
#define MAXSIZE 10
using namespace std;
//定义学生结构体,用于存储学号和成绩
typedef struct student
{
 int number;
 int chinese,english,CLanguage;
 int total;
 float avarge;
}STUDENT;
STUDENT array[MAXSIZE];
int writescore(char * filename);//将成绩输出到文本文件
int readscore(char * filename);//读出成绩,并进行计算
//主函数
int main()
{
 char * file;
 file=(char *)malloc(sizeof(char));
 cout<<"input filename: "<<endl;
  cin>>file;
 writescore(file);
 readscore(file);
 return 0;
}
//输出成绩到文本函数定义
int writescore(char * filename)
{
 int students;//总的学生个数
 int chinese,english,c;//各个成绩
 ofstream outfile(filename,ios::out);
 if(!outfile)
 {
  cerr<<"open error!"<<endl;
  exit(1);
 }
 cout<<"please input number of students: "<<endl;
 cin>>students;//输入学生个数
 outfile<<students<<endl;
 outfile<<"number"<<setw(20)<<"chinese"<<setw(20)<<"english"<<setw(20)<<"cLanguage"<<endl;
 for(int i=0;i<students;i++)
 {
  cout<<"please input the students' score of chinese english and c:"<<endl;
  cin>>chinese>>english>>c;
  outfile<<i+1<<setw(20)<<chinese<<setw(20)<<english<<setw(20)<<c<<endl;
 }
 outfile.close();
 return 0;
}
//读出成绩并进行处理函数的详细定义
int readscore(char * filename)
{
 int i=0;
 int j;
 string num,chin,eng,C;
 ifstream infile(filename,ios::in);
 if(!infile)
 {
  cerr<<"open error."<<endl;
  exit(1);
 }
 infile>>i;//获取总的学生数目
 infile>>num>>chin>>eng>>C;
 //分别获取每个学生的学号,和各项成绩,并进行相应的计算
 for(int k=0;k<i;k++)
 {
 
  infile>>array[k].number>>array[k].chinese>>array[k].english>>array[k].CLanguage;
  array[k].total = array[k].chinese+array[k].english+array[k].CLanguage;
  array[k].avarge=array[k].total/3;
 
 }
 infile.close();
 //将处理后的成绩单输入到statistics文本文件中
 ofstream file2("statistic.dat",ios::out);
 if(!file2)
 {
  cerr<<"open error!"<<endl;
  exit(1);
 }
 file2<<num<<setw(20)<<chin<<setw(20)<<eng<<setw(20)<<C<<setw(20)<<"total"<<setw(20)<<"average"<<endl;
 for(j=0;j<i;j++){
 
  file2<<array[j].number<<setw(20)<<array[j].chinese<<setw(20)<<
     array[j].english<<setw(20)<<array[j].CLanguage<<setw(20)<<array[j].total<<setw(20)<<array[j].avarge<<endl;
 
 }
 //判断成绩不及格的学生,并输出
 for(j=0;j<i;j++)
 {
  if(array[j].chinese<60||array[j].english<60||array[j].CLanguage<60)
   file2<<"Number "<<array[j].number<<" student have test failed"<<endl;
 }
 file2.close();
 return 0;
}