疯了,为什么会wrong answer
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;
class Student {
private:
char name[20];
int age;
int id;
int score[5];
double avgval;
public:
Student()
{
age=20;
id=0;
score[0]=0;
score[1]=0;
score[2]=0;
score[3]=0;
score[4]=0;
avgval=0.0;
}
void input()
{
char cinputs[200];
cin.getline(cinputs,200);
int i=0,ipos=0,j=0,ibeg=0;
bool blflag=false;
while(cinputs[i]!='\0')
{
if(cinputs[i]==',')
{
ipos++;
blflag=true;
}
if(ipos==1&&blflag)//姓名
{
for(j=0;j<i;j++)
{
name[j]=cinputs[j];
}
name[j]='\0';
ibeg=i+1;
blflag=false;
}
else if(ipos==2&&blflag)//年龄
{
char cage[10];
for(j=ibeg;j<i;j++)
{
cage[j-ibeg]=cinputs[j];
}
age=atoi(cage);
//sscanf(cage,"%d",&age);
ibeg=i+1;
blflag=false;
}
else if(ipos==3&&blflag)//学号
{
char cid[10];
for(j=ibeg;j<i;j++)
{
cid[j-ibeg]=cinputs[j];
}
id=atoi(cid);
ibeg=i+1;
blflag=false;
}
else if(ipos==4&&blflag)//成绩1
{
char cscore[10];
for(j=ibeg;j<i;j++)
{
cscore[j-ibeg]=cinputs[j];
}
score[0]=atoi(cscore);
ibeg=i+1;
blflag=false;
}
else if(ipos==5&&blflag)//成绩2
{
char cscore[10];
for(j=ibeg;j<i;j++)
{
cscore[j-ibeg]=cinputs[j];
}
score[1]=atoi(cscore);
ibeg=i+1;
blflag=false;
}
else if(ipos==6&&blflag)//成绩3
{
char cscore[10];
for(j=ibeg;j<i;j++)
{
cscore[j-ibeg]=cinputs[j];
}
score[2]=atoi(cscore);
ibeg=i+1;
blflag=false;
}
i++;
}
//成绩4
char cscore[10];
for(j=ibeg;j<i;j++)
{
cscore[j-ibeg]=cinputs[j];
}
score[3]=atoi(cscore);
}
void calculate()
{
avgval=(score[0]+score[1]+score[2]+score[3])/4.0;
}
void output()
{
cout<<name<<","<<age<<","<<id<<","<<avgval<<endl;
}
};
int main() {
Student student; // 定义类的对象
student.input(); // 输入数据
student.calculate(); // 计算平均成绩
student.output(); // 输出数据
}