11.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求只输出成绩在80~89分的学生数据。
解:
设计一个学生类Stud,包括no(学号)、name(姓名)和deg(成绩)数据成员,另有两个普通成员函数setdata()和disp(),前者用于设置对象数据,后者用于只输出成绩在80~89分数段的学生数据。在main()函数中定义了一个对象数组,用于存储输入的学生数据。
本程序执行结果如下:
输入学号 姓名 成绩: 1 stud1 78
输入学号 姓名 成绩: 2 stud2 85
输入学号 姓名 成绩: 3 stud3 89
输出数据
学号 姓名 成绩
2 stud2 85
3 stud3 89
參考答案://其它代码修改而来
//void show();相当于disp()
//void getinfo();类似于setdata();请自己修改
//有问题加C++群***********
#include<iostream>
#include<cstring>
using namespace std;
class student
{
static int n;//学生人数
static float sum;//总成绩
static int jige;//及格人数
static int bujige;//不及格人数
char name[32];
char num[32];
int score;
public:
student(){};
~student();
void getinfo();
void show();
int getscore(){return score;}
static void show_info();
};
int student::n = 0;
float student::sum = 0;
int student::jige = 0;
int student::bujige = 0;
student::~student()
{
n--;
sum-=score;
if (score<60)
bujige--;
else
jige--;
}
void student::getinfo()
{
cout<<"请输入姓名:";
cin>>name;
cout<<"请输入学号:";
cin>>num;
cout<<"请输入成绩:";
cin>>score;
sum+=score;
n++;
if (score<60)
bujige++;
else
jige++;
}
void student::show()
{
cout<<"姓名:\t"<<name<<"\t学号:\t"<<num<<"\t成绩:\t"<<score<<endl;
}
void student::show_info()
{
cout<<"共有学生"<<n<<"人"<<endl;
cout<<"及格人数"<<jige<<"个"<<endl;
cout<<"不及格人数"<<bujige<<"个"<<endl;
if (n!=0)
cout<<"平均成绩是"<<sum/n<<endl;
}
void main()
{
student* obj;
int n;
cout<<"请输入学生总数:";
cin>>n;
if (n<=0)
{
cout<<"错误的学生人数"<<endl;
return;
}
obj = new student[n];
for (int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个学生的信息"<<endl;
obj[i].getinfo();
}
for (i=0;i<n;i++)
if(obj[i].getscore()>=80)
obj[i].show();
student::show_info();
delete[] obj;
}