//题目6. 定义一个Student类,并使Student类具有以下特点:
//(1)该类学生具有学生姓名、学号、班级、C语言程序设计、
//高等数学、计算机导论、操作系统四门课程的成绩(2)创建
//一个数据成员,实现每建立一个学生对象进行自动记数功能
//(3)学生的全部信息由键盘输入(4)通过成员函数统计学
//生平均成绩(要求当课程增加时,成员函数无需修改仍然可
//求平均成绩(5)输出学生的各科成绩与平均成绩(6)在主函
//数中,学生对象的定义采用对象数组实现(7)统计不及格学生人数
//(8)能以方便的方式实现对课程数量的修改
#include<iostream.h>
#include<string.h>
#include<stdio.h>
const int M=50; //M表示学生人数
const int N=4; //N表示课程数量
class Student
{
private:
char name[25],id[10],cls[20];
double course[N];//数组表示N门课程成绩
public:
Student();
double Aver();
double *Getscore();
void Display();
void Display_Aver();
}
Student::Student()//构造函数的实现
{
int i;
cin>>name>>id>>cls;
for(i=0;i<N;i++)
{
cin>>course[i];
}
}
double* Student::Getscore() //获取分数
{
return course;
}
void Student::Display() //输出分数
{
int i;
cout<<name<<" ";
cout<<id<<" ";
for(i=0;i<N;i++)
{
cout<<course[i]<<" ";
}
cout<<endl;
}
void Student::Display_Aver()
{
int i;
double aver_score=0;
for(i=0;i<N;i++)
{
aver_score+=course[i];
}
aver_score=aver_score/N;
cout<<"该名学生平均分数为:"<<aver_score<<endl;
}
void main()
{
int i,j,k,n[M];
double aver_score;
for(i=0;i<M;i++)//初始化数组
n[i]=0;
cout<<"请按以下方式输入学生信息,不同数据之间以空格分割:"<<endl;
cout<<"姓名 学号 班级 C语言 高数 计导 操作系统"<<endl;
Student s[M];
cout<<endl<<"以下是输出信息:"<<endl;
cout<<"姓名 学号 班级 C语言 高数 计导 操作系统"<<endl;
for(i=0;i<M;i++)
{
s[i].Display();
}
cout<<endl;
cout<<"平均成绩:";
aver_score=0;
for(j=0;j<N;j++)
for(i=0;i<M;i++)
{
aver_score+=*(s[i].Getscore());
}
cout<<aver_score/M<<endl<<endl;
cout<<"不及格学生:"<<endl;
for(i=0;i<M;i++)
{
int nopass=0; //不及格课程数量
for(j=0;j<N;j++) //查找60分以下的课程
{
if(*(s[i].Getscore()+j)<60)
nopass++;
}
for(k=0;k<M; )
{
if(nopass>2)
k++;
}
/*do
{
if(nopass>2)
k++;
}while();*/
cout<<"不及格人数:"<<k<<endl;
}
}
2228

被折叠的 条评论
为什么被折叠?



