【问题描述】请在代码框中填充正确的代码,完成以下功能:
(1)声明一个Student类型,包含学号和成绩两个属性。
(2)定义无参构造函数,从键盘输入学生的数据(学号、成绩),初始化Student对象
(3)定义建立一个对象数组,存储n个学生的数据信息
(4)定义一个全局函数void pass( Student *pStu,int size),用指针作为形参,输出所有及格的学生数据(大于等于60分即为及格)。如果没有,则输出“not exist”。
【输入说明】输入有n+1行,第一行输入正整数n,接下来的n行输入n个学生的数据,学号与成绩之间用空格分隔
【输出说明】输出有若干行,分别表示学生数组中及格学生的数据,左对齐,且学号信息占12位宽度,成绩有1位小数。
【输入样例】
3
zhangsan 100
lisi 65.5
wangwu 58.1
【输出样例】
zhangsan 100.0
lisi 65.5
【样例说明】对象数组中存储了3个学生的信息,及格的学生是zhangsan和lisi,则输出他们的数据。学号占12位宽度,成绩精度为1位小数,可能界面显示有误差,请在代码中严格控制。
【评测规模】0<n≤100
对号入座,别忘了把我的注释删掉,by2020届信息院通信 毕
#include <iostream>
#include <string>
#include <iomanip> //输出控制
using namespace std;
class Student //Student类型声明
{
private :
string xh;//为啥学号是姓名鸭?作为一个小朋友我有很多问号??
float cj;
public:
void setStudent()
{
string a;
float b;
cin >> a >> b;
xh = a;
cj = b;
}
string getXh()
{
return xh;
}
float getCj()
{
return cj;
}
};
void pass(Student* pStu, int size) //pass函数定义
{
int shu = 0;
cin.get();
for (int i = 0; i < size; i++)
{
pStu[i].setStudent();
cin.get();
}
for (int i = 0;i < size; i++)
{
if (pStu[i].getCj()>= 60)
{
shu++;
cout << left << setw(11) << pStu[i].getXh() << " ";//因为字符串结尾就有一个空格,所以限定左对齐11位
cout << fixed << setprecision(1) << pStu[i].getCj() << endl;
}
if (i ==size - 1)
{
if (shu!=0)
{
return;
}
else
{
cout << "not exist" << endl;
return;
}
}
}
}
int main()
{
int n;
cin >> n;
Student* stu = new Student[n]; //动态分配内存给n个Student对象
pass(stu, n); //调用pass函数,以指针stu作为函数参数
delete[] stu; //释放动态内存
return 0;
}