程序设计与算法(三)第02周测验001:编程填空:学生信息处理程序
程序设计与算法(三)第02周测验001:编程填空:学生信息处理程序
本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第二周测验。
-
总时间限制:
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(); // 输出数据 }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
-
输入
输入数据为一行,包括: 姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。 其中姓名为由字母和空格组成的字符串(输入保证姓名不超过20个字符,并且空格不会出现在字符串两端),年龄、学号和学年平均成绩均为非负整数。信息之间用逗号隔开。
-
输出
输出一行数据,包括: 姓名,年龄,学号,四年平均成绩。 信息之间用逗号隔开。
-
样例输入
Tom Hanks,18,7817,80,80,90,70
-
样例输出
Tom Hanks,18,7817,80
-
提示
必须用类实现,其中所有成员变量都是私有的。 输出结果中,四年平均成绩不一定为整数。
注意提示:四年平均成绩不一定为整数
,所以平均值我们应该用double
类型
我们需要的数据是:
姓名 //不超过20字符,包含空格,故用char name[20]
年龄 //int即可
学号 //看样例,int即可
第一年成绩 //int即可
第二年成绩
第三年成绩
第四年成绩
平均成绩 //可能会出现小数点,所以用double
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
输入格式为:
姓名,年龄,学号,四年平均成绩
//Tom Hanks,18,7817,80,80,90,70
- 1
- 2
并且所有成员变量都是私有的,故有:
private:
char name[20];
int old;
int card;
int n1,n2,n3,n4;
double aver;
char c;
//输入使用的是`,`分隔,所以我们需要使用一个`char`字符接收`,`的输入
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
这时候我们就要注意了。
cin
的输入是遇到空白停止的,所以我们不能使用。有人说了,既然是遇到空白停止了。用两次cin
,一次存姓,一次存名,不行嘛?
是不可以的。看看输入格式我们发现后面存名的一次cin
可能会把,
号也输入进去。导致后面的数据不能完好的存储起来。
所以我们的输入要求是:
输入遇到,
停止或者输入了20个字符停止。
按照这个条件,我们可以使用getline()
getline()
有三个参数,第一个是存入的数组名,第二个是输入的字符数,第三个是遇到哪个字符就停止输入。
getline(name, 20 ,',')
//第一个是存入的数组名,第二个是输入的字符数20个,第三个是遇到字符,就停止输入。
- 1
- 2
输入的问题解决了。接下来看主函数。
int main() {
Student student; // 定义类的对象
student.input(); // 输入数据
student.calculate(); // 计算平均成绩
student.output(); // 输出数据
}
- 1
- 2
- 3
- 4
- 5
- 6
发现成员函数都没有参数输入。且成员函数有:
input()
, calculate()
, output()
三个,现在开始写成员函数
public:
void input(){
cin.getline( name, 20, ',');
cin >> old >> c >> card >> c >> n1 >> c >> n2 >> c >> n3 >> c >> n4;
}
void calculate(){
aver = (n1 + n2 + n3 + n4) / 4.0;
}
void output(){
cout << name << "," << old << "," << card << "," << aver;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
至此,编写完成。我们看看最终的代码
private:
char name[20];
int old;
int card;
int n1,n2,n3,n4;
double aver;
char c;
public:
void input(){
cin.getline(name,20,',');
cin>>old>>c>>card>>c>>n1>>c>>n2>>c>>n3>>c>>n4;
}
void calculate(){
aver = (n1 +n2 +n3 +n4)/4.0;
}
void output(){
cout<<name<<","<<old<<","<<card<<","<<aver;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
提交,通过,记得下载通过码
文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/CANGYE0504/article/details/104709328
- 点赞
- 收藏
- 关注作者
评论(0)