标题:运用面向对象的方法实现输入若干学生成绩,计算所有学生的平均成绩、最高成 ...
只看楼主
hujihong520
Rank: 1
来 自:南京
等 级:新手上路
帖 子:23
专家分:0
注 册:2013-9-7
结帖率:66.67%
已结贴  问题点数:10 回复次数:4 
运用面向对象的方法实现输入若干学生成绩,计算所有学生的平均成绩、最高成绩和最低成绩。请高手帮忙改正
运用面向对象的方法实现输入若干学生成绩,计算所有学生的平均成绩、最高成绩和最低成绩。
要求:
学生信息包括:学号、姓名、成绩(单科)
分别设计不同函数实现求平均成绩(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;
}
设计完成
结果不好,平均成绩出问题
搜索更多相关主题的帖子: private include public 信息 姓名 
2013-12-12 22:37
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
得分:0 
int类型不是万能的
2013-12-13 00:13
hujihong520
Rank: 1
来 自:南京
等 级:新手上路
帖 子:23
专家分:0
注 册:2013-9-7
得分:0 
回复 2楼 i80286
怎么改正?
2013-12-13 00:42
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
得分:10 
#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;
}
收到的鲜花
  • hujihong5202013-12-13 12:53 送鲜花  3朵   附言:原创内容
2013-12-13 02:13
hujihong520
Rank: 1
来 自:南京
等 级:新手上路
帖 子:23
专家分:0
注 册:2013-9-7
得分:0 
回复 4楼 i80286
谢谢你
2013-12-13 12:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-425130-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.155701 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved