使用VS2022编译器
问题:
对学生类数组对象(student stu[all_stu])输入数据
进行For循环输入时,
for (int i = 0; i < all_stu; i++)
{
cout << "测试:进入输入句" << endl;
stu[i].getstudent(stu[i]);
}
在第三次输入时 会跳过成员函数void getstudent(student p) 中的(cin >> p.name >> p.stu_number>>p.grade[subjects]; )语句,完全没有任何头绪。求指点!
结果如图:
代码如下
#include <iostream>
#include <string.h>
#include <string >
#include <stdio.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const int all_stu =3;
const int subjects = 3;
class student {
public:
void getstudent(student p)
{
cout << "测试:进入输入函数" << endl;
cin >> p.name >> p.stu_number>>p.grade[subjects];
cout << "输入完毕"<<endl;
}
void aver_grade(student p)
{
double sum = 0;
for (int i = 0; i < subjects; i++)
{
sum += p.grade[i];
}
p.avergrade = (sum / subjects);
if(p.avergrade < 60.0)
{
fail_stu += 1;
}
cout << p.avergrade << endl;
};
void show_student(student p)
{
cout << "输出学生的各科成绩与平均成绩";
cout <<"名字:" << p.name <<"学号:" << p.stu_number<<"各科成绩:";
for (int i = 0; i < subjects; i++)
{
cout<<p.grade[i]<<" ";
}
cout << p.avergrade;
};
static int all_stus;
static int fail_stu;
static void show_all_fail();
private:
string name;
int stu_number=0;
double grade[subjects+1] = {NULL};
double avergrade=0;
};
int student::all_stus = all_stu;
int student::fail_stu = 0;
void student::show_all_fail()
{
cout << "学生的总数:" << all_stus << "平均成绩不及格学生的总数:" << fail_stu<< endl;
};
int main() {
student stu[all_stu];
cout << "请输入学生的姓名、学号、各科的成绩"<<endl;
for (int i = 0; i < all_stu; i++)
{
cout << "测试:进入输入句" << endl;
stu[i].getstudent(stu[i]);
}
return 0;
}