设计一个CStudent(学生)类,并使CStudent类具有以下特点:
1)该类有学生姓名、学号、C++程序设计、高等数学、数据结构三门课程的成绩;
2)学生全部信息由键盘输入,以提高程序的适应性;
3)通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩;
4)输出学生的基本信息、各科成绩与平均成绩;
5)学生对象的定义采用对象数组实现;
6)统计不及格人数。
#include<iostream>
using namespace std;
class stu
{
public:
void construct(string na,string nu,int *sc);
void show();
void average();
static void shof();
static void fail(stu &sc);
private:
string name,number;
int score[100];
static int failor;
};
int stu::failor;
void stu::construct(string na,string nu,int *sc)
{
name=na;
number=nu;
for(int i=0;i<100;i++)
{
if(sc[i]!=-1)
score[i]=sc[i];
else
{score[i]=sc[i];
break;}
}
}
void stu::show()
{
cout<<name<<" "<<number<<" ";
for(int i=0;i<100;i++)
{
if(score[i]!=-1)
cout<<score[i]<<" ";
else break;
}
cout<<endl;
}
void stu::average()
{
float a;
int c=0;//c一定要给个初值!!!
for(int i=0;i<100;i++)
{
if(score[i]!=-1)
{ a=a+score[i];
c++;}
else break;
}
a=(a*1.0)/(c*1.0);
cout<<"这几门课的平均分是:"<<a<<endl;
}
void stu::fail(stu &sc)
{
for(int i=0;i<100;i++)
{
if(sc.score[i]!=-1)
{
if(sc.score[i]<60)
{
failor++;
break;
}
}
else break;
}
}
void stu::shof()
{
cout<<"不及格的人数共有:"<<failor<<endl;
}
int main()
{
int n;
int sc[100];
cout<<"请输入学生总数:"<<endl;
cin>>n;
stu s[n];
string na,nu;
for(int j=0;j<n;j++)//对对象数组初始化
{
cout<<"请输入第"<<j+1<<"名学生的姓名,学号:"<<endl;
cin>>na>>nu;
cout<<"请继续输入第"<<j+1<<"名学生的几门分数,输入-1停止:"<<endl;
for(int i=0;i<100;i++)
{
cin>>sc[i];
if(sc[i]==-1)
break;
}
s[j].construct(na,nu,sc);
stu::fail(s[j]);
if(j!=n-1)
cout<<"下一位学生"<<endl;
}
for(int k=0;k<n;k++)
{
s[k].show();
s[k].average();
}
stu::shof();
return 0;
}
全部满足上述所给条件,算是c++入门的练习了,但还是耗费我很长时间去写这个程序,通过不断实验,试错,写完这个程序后,c++的一些基础性东西大致会用了,算是小白的一篇总结,第一次独立写100多行,记录一下。
如果再完善一下功能,可以设置对象数组,这样就能对多个班级的每个同学采集信息。
欢迎交流