为什么一到第十个同学之后就不行键盘继续输入出现问题了

#include
#include
using namespace std;
struct student{
int number;
char name;
int socer;
};
void a(student s[])
{
int n;
for(n=1;n<31;n++)
{
cout<<"第"<<n<<"学生学号是";
cin>>s[n].number;
cout<<"第"<<n<<"学生的名字是";
cin>>s[n].name;
cout<<"第"<<n<<"学生的分数是";
cin>>s[n].socer;
}
}
double average(student s[])
{
int sum=0,n;
for(n=0;n<30;n++)
{
sum+=s[n].socer;
}
return sum/30;
}
void printf(student s[])
{
int n;
for(n=0;n<30;n++)
{
cout<<s[n].number<<" "
<<s[n].name<<" "
<<s[n].socer<<endl;
}
}
int b(student s[])
{

int max=-1;
int n,m=0;
for(n=0;n<30;n++)
{
    if(s[n].socer>max)
    {
        max=s[n].socer;
        m=n;
    }
}
return m;

}
int main()
{
student str[30];
a(str);
printf(str);
int n=average(str);
cout<<"全班平均成绩为"<<n<<endl;
int k;
k=b(str);
cout<<"成绩最高的是\n";
cout<<str[k].number<<" "
<<str[k].name<<" "
<<str[k].socer<<endl;
return 0;
}

img

名字要用字符串类型 你可以选择字符数组或者C++的string类型

你如果要定义结构体,那么你的name就要用数组,,或者用指针,建议用指针,如果是初学者或者用的不熟练,可以用数组,定义一个char类型数组,就可以了,如果还有问题,可以私聊我哦