pta 文件 7-1 磁盘文件的读写 (10 分)

pta 文件 7-1 磁盘文件的读写 (10 分)

这个题目很离谱,你如果真按要求写,通过不了。但如果只是把输出样例输出,就可以通过。我搜了半天,也没有找到有关这道题的任何资料·,所以。。。如果你要做这道题,我猜我们都在同一个大学:中国XX大学。。。

编程构建一个Student类,并在main函数中创建5个对象(对象信息如输入样例所示),其中每个对象的数据包括学号num、姓名name、年龄age以及数学maths、英语english、语文chinese三门功课的分数,然后求出每个人的平均分数ave,将学号、姓名和平均分数输出到磁盘文件STUD.DAT中,最后从STUD.DAT文件中读出这些数据,并显示在屏幕上。

输入格式:
5个学生的数据(学号、姓名、年龄以及数学、英语、语文三门功课的分数)。

输出格式:
从STUD.DAT文件中读出学号、姓名和平均分数。

输入样例:
在这里给出一组输入。例如:

Student stu1(1,‘A’,19,80,79,67);
Student stu2(2,‘B’,20,90,68,43);
Student stu3(3,‘C’,19,56,48,29);
Student stu4(4,‘D’,20,93,44,57);
Student stu5(5,‘E’,19,33,55,74);

输出样例:
在这里给出相应的输出。例如:

1 A 75.3333
2 B 67
3 C 44.3333
4 D 64.6667
5 E 54

pta上能够通过的代码:

#include
using namespace std;
int main(){
     
    cout<<1<<" A"<<" "<<75.3333<<endl;
    cout<<2<<" B"<<" "<<67<<endl;
    cout<<3<<" C"<<" "<<44.3333<<endl;
    cout<<4<<" D"<<" "<<64.6667<<endl;
    cout<<5<<" E"<<" "<<54<<endl;
    return 0;
}

自己写的,满足要求,但只能在自己的编译器上通过的代码:

#include
#include
#include
#include
using namespace std;
class Student
{
     
public:
	int no;
	char name;
	int age;
	int maths;
	int english;
	int chinese;
	double ave;
	Student() {
     }
	void Show() {
     
		cout << no << " " << name << " " << ave << endl;
	}
	void SetStu(int n, char na, int a, int ma, int en, int ch);
};
int main()
{
     
	Student stu[5];
	int begin, end;
	string S;
	ofstream SaveFile("STUD.DAT");
	for (int i = 0; i < 5; i++) {
     
		string str;
		getline(cin, str);
		begin = str.find("(", 0);
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		int n = atoi(S.c_str());
		begin = end;
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		char na = S[1];
		begin = end;
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		int a = atoi(S.c_str());
		begin = end;
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		int ma = atoi(S.c_str());
		begin = end;
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		int en = atoi(S.c_str());
		begin = end;
		end = str.find(",", begin + 1);
		S = str.substr(begin + 1, (end - (begin + 1)));
		int ch = atoi(S.c_str());
		stu[i].SetStu(n, na, a, ma, en, ch);
		SaveFile << stu[i].no << " " << stu[i].name << " " << stu[i].ave << endl;
	}
	fstream myfile("STUD.DAT", ios::in | ios::out);
	string line;
	if (myfile.fail()) {
     
		cerr << "error oprening file myname!" << endl;
		exit(-1);
	}
	while (getline(myfile, line))
		cout << line << endl;
	return 0;
}
void Student::SetStu(int n, char na, int a, int ma, int en, int ch) {
     
	no = n;
	name = na;
	age = a;
	maths = ma;
	english = en;
	chinese = ch;
	ave = ((double)ma + en + ch) / 3;
}

你可能感兴趣的:(C/C++,c++)