题目描述: 编写程序,从输入文件“data.in”中读入某班n个学生信息,建立学生数据结构体,包括学号、姓名

题目描述:
编写程序,从输入文件“data.in”中读入某班n个学生信息,建立学生数据结构体,包括学号、姓名和三门课的成绩,计算输出该班各门课的平均分。
输入数据及格式:
正常输入应包含n+1行数据,第一行是学生个数n(1<n<60),其余n行是学生数据,每行中各数据之间有一个空格作为间隔符,即:
n
学生1学号 姓名 math成绩 English成绩 C_prog成绩
学生2学号 姓名 math成绩 English成绩 C_prog成绩
……
学生n学号 姓名 math成绩 English成绩 C_prog成绩
学生的学号字符串(长度不超过10)和姓名字符串(长度不超过30)均不包含空格,3门课成绩均为整数(0<=成绩<=100)。所有输入数据均从数据文件data.in中读取。输入数据文件中每行以回车换行符号’\n’结尾,前后没有多余的空格和换行。
程序设计应当考虑可能存在非法输入(data.in文件为空或输入数据不符致使输入函数调用不成功,或输入数据不合题意)。

第1个回答  2012-04-24
#include <iostream>
#include <fstream>
using namespace std;

typedef struct student
{
char num[10];
char name[30];
int score[3];
}student;

int main()
{
ifstream ifile;
ifile.open("data.in");
int n, j, i = 0;
student s[60]
ifile >> n;
if (n < 1 || n > 60)
{
cout << "人数错误" << endl;
return 0;
}
while (i < n)
{
ifile >> s[i].num >> s[i].name >> s[i].score[0] >> s[i].score[1] >> s[i].score[2];
for (j = 0; j < 3; j++)
{
if (s[i].score[j] < 0 || s[i].score[i] > 100)
{
cout << "成绩错误" << endl;
}
}
cout << s[i].num << s[i].name << s[i].score[0] << s[i].score[1] << s[i].score[2] << endl;
i++;
}
ifile.close();
return 0;
}本回答被提问者采纳
第2个回答  2012-04-24
编写一个程序,输入N个学生数据,包括学号、姓名和三门功课的成绩, 要求{ cout<<"\\tGrade"<<j<<":"; cin>>data[i].grade[j]; //取消
相似回答