注册 登录
编程论坛 C++教室

运用面向对象的方法实现输入若干学生成绩,计算所有学生的平均成绩、最高成绩和最低成绩。请高手帮忙改正

hujihong520 发布于 2013-12-12 22:37, 627 次点击
运用面向对象的方法实现输入若干学生成绩,计算所有学生的平均成绩、最高成绩和最低成绩。
要求:
学生信息包括:学号、姓名、成绩(单科)
分别设计不同函数实现求平均成绩(Ave)、求最高成绩(Max)和求最低成绩(Min),不能由一个函数来完成以上3个功能
使用对象数组
#include <iostream>
using namespace std;
#include <string>
class student
{
private:
  int num ;
  float score;
  string name;
  public:
  void set()
  { cout<<"\n学号:"  ;
    cin>>num;
 cout<<"\n成绩:";
 cin>>score;
 cout<<"\n姓名:" ;
 cin>>name;
  }
 void print()
 {cout<<"\n学号:"<<num;
  cout<<"\n成绩:"<<score;
  cout<<"\n姓名:"<<name;
  }
  float getScore(){return score;}
  };
int main()
{ student  a[3];
  int i,j,max=0,min=0,ave=0,sum=0;
  for(i=0;i<3;++i)
   a[i].set();
for(j=0;j<2;++j)
   { if(a[j].getScore()<a[j+1].getScore())
         max=j+1;
   }
for(j=0;j<2;++j)
   { if(a[j].getScore()>a[j+1].getScore())
        min=j+1;
   }
for(j=0;j<2;++j) {
sum+=a[j].getScore();
}
ave=sum/3;
a[max].print();
a[min].print();
a[ave].print();  
   return 0;
}
设计完成
结果不好,平均成绩出问题
4 回复
#2
i802862013-12-13 00:13
int类型不是万能的
#3
hujihong5202013-12-13 00:42
回复 2楼 i80286
怎么改正?
#4
i802862013-12-13 02:13
#include <iostream>
using namespace std;
#include <string>
#include <iomanip>

class student
{
private:
  int num ;
  float score;
  string name;
  public:
  void set()
  {
    cout<<"\n学号:"  ;
    cin>>num;
    cout<<"\n成绩:";
    cin>>score;
    cout<<"\n姓名:" ;
    cin>>name;
  }
void print()
{
  cout<<"\n学号:"<<num;
  cout<<"\n成绩:"<<score;
  cout<<"\n姓名:"<<name;
}
void print(const double &ave)
{
   cout<<endl;
   cout<<"平均成绩:"<<setprecision(4)<<ave<<endl;
}
float getScore(){return score;}
};
int main()
{
  student  a[3],b;
  int i,j,max=0,min=0,sum=0;
  double ave=0.0;
  for(i=0;i<3;++i)
   a[i].set();
for(j=0;j!=3;++j)
    for(i=0;i!=3;i++)
   {
       if(a[j].getScore()<a[i].getScore())
           max=i;
   }
for(j=0;j!=3;++j)
    for(i=0;i!=3;i++)
   {
       if(a[j].getScore()>a[i].getScore())
        min=i;
   }
for(j=0;j!=3;++j)
{
sum+=a[j].getScore();
}
ave=double(sum)/3;
a[max].print();
a[min].print();
b.print(ave);
return 0;
}
#5
hujihong5202013-12-13 12:07
回复 4楼 i80286
谢谢你
1