005:编程填空:学生信息处理程序
总时间限制:
1000ms
内存限制:
1024kB
// 在此处补充你的代码
描述
实现一个学生信息处理程序,计算一个学生的四年平均成绩。
要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。
补充下列程序中的 Student 类以实现上述功能。
#include <iostream> #include <string> #include <cstdio> #include <cstring> #include <sstream> #include <cstdlib> using namespace std; class Student {
}; int main() { Student student; // 定义类的对象 student.input(); // 输入数据 student.calculate(); // 计算平均成绩 student.output(); // 输出数据 }
输入
输入数据为一行,包括:
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
其中姓名为由字母和空格组成的字符串(输入保证姓名不超过20个字符,并且空格不会出现在字符串两端),年龄、学号和学年平均成绩均为非负整数。信息之间用逗号隔开。
输出
输出一行数据,包括:
姓名,年龄,学号,四年平均成绩。
信息之间用逗号隔开。
样例输入
Tom Hanks,18,7817,80,80,90,70
样例输出
Tom Hanks,18,7817,80
提示
必须用类实现,其中所有成员变量都是私有的。
输出结果中,四年平均成绩不一定为整数。
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;
class Student {
public:
void input() {
cin.getline(m_name, 20, ',');
scanf("%d,%d,%d,%d,%d,%d", &m_age, &m_num, &grade_1, &grade_2, &grade_3, &grade_4);
}
void calculate() {
avg = (grade_1 + grade_2 + grade_3 + grade_4) / 4.0;
}
void output() {
cout << m_name <<"," << m_age<<"," << m_num<<"," << avg;
}
private:
char m_name[20];
int m_age;
int m_num;
int grade_1;
int grade_2;
int grade_3;
int grade_4;
double avg;
};
int main() {
Student student; // 定义类的对象
student.input(); // 输入数据
student.calculate(); // 计算平均成绩
student.output(); // 输出数据
}
唯一值得注意的是要用cin_getline来解决逗号的问题
cin.get(name, 20, ',');函数原型是istream& get ( char* s, streamsize n, char delim );第一个参数*s是个字符指针,第二个参数n,表示读入n-1个字符,第三个参数delim表示结束字符(可以不写,不写默认为换行符)。作用是读入一串字符,要么读到n-1个字符停止,要么读到结束字符停止