C:简单的学生信息处理程序实现
总时间限制: 1000ms 内存限制: 65536kB
描述
在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的。
(注:评测系统无法自动判断变量是否私有。我们会在结束之后统一对作业进行检查,请同学们严格按照题目要求完成,否则可能会影响作业成绩。)
输入
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
输出
一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
样例输入
Tom,18,7817,80,80,90,70
样例输出
Tom,18,7817,80
题解分析
主要是处理字符串的问题。我把输入当作一个字符串放在sting类型的input变量里,然后用string自带的find()和substr()方法对字符串进行处理,分割出7个字符串,存放在字符串数组inputArr中。然后把这7个字符串传入student类的构造函数中,在自定义的student类的构造函数里,利用stringstream类把string类型转换成int类型。再分别写四个getX()函数返回私有成员变量。
处理输入字符串的代码片段
while(-1 != posEnd)
{
posEnd = input.find(",", posStart);
len = posEnd - posStart;
inputArr[arrPos++] = input.substr(posStart, len);
posStart = posEnd + 1;
}
string转换成int代码片段
stringstream sa;
sa << sAge; //string sAge;
sa >> age; //int age;
完整代码
#include<iostream>
#include<string>
#include<string.h>
#include<cstdio>
#include<stdlib.h>
#include<sstream>
using namespace std;
class student
{
private:
string name;
string sno;
int age;
int avgGrade;
public:
student(string sName, string sAge, string sSno, string grade1, string grade2, string grade3, string grade4): name(sName), sno(sSno)
{
int sum = 0;
int tgrade = 0;
stringstream s1;
stringstream s2;
stringstream s3;
stringstream s4;
stringstream sa;
sa << sAge;
sa >> age;
s1 << grade1;
s1 >> tgrade;
sum += tgrade;
s2 << grade2;
s2 >> tgrade;
sum += tgrade;
s3 << grade3;
s3 >> tgrade;
sum += tgrade;
s4 << grade4;
s4 >> tgrade;
sum += tgrade;
avgGrade = sum / 4;
}
string getName()
{
return name;
}
string getSno()
{
return sno;
}
int getAge()
{
return age;
}
int getAvgGrade()
{
return avgGrade;
}
};
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("mout.txt", "w", stdout);
string input;
string inputArr[7];
int arrPos = 0;
int posStart = 0;
int posEnd = 0;
int len = 0;
while(cin >> input)
{
arrPos = 0;
posStart = 0;
posEnd = 0;
len = 0;
while(-1 != posEnd)
{
posEnd = input.find(",", posStart);
len = posEnd - posStart;
inputArr[arrPos++] = input.substr(posStart, len);
posStart = posEnd + 1;
}
student stud(inputArr[0], inputArr[1], inputArr[2], inputArr[3], inputArr[4], inputArr[5], inputArr[6]);
cout << stud.getName() << "," << stud.getAge() << "," << stud.getSno() << "," << stud.getAvgGrade();
}
}