//利用静态数据成员的概念,设计一个学生类,学生信息包括姓名,成绩,; //统计学习的总人数,对成绩进行排序,并输出相关信息

//利用静态数据成员的概念,设计一个学生类,学生信息包括姓名,成绩,;
//统计学习的总人数,对成绩进行排序,并输出相关信息

#include"iostream"
#include"iomanip"
#include"string.h"
using namespace std;
class student
{
private:
    char name[3];
    float score;
    static int sum;
public:
    student()
    {
        cin>>name>>score;
        sum++;
    }
    student(const student &x)
    {
        strcpy(name,x.name);
        score=x.score;

    }
    void sort2(student *h);
    void print();
    void print1();
};
int student::sum=0;
int main()
{
    student *s=new student[5];
    s[1].sort2(s);
    for(int i=0;i<5;i++)
        s[i].print();
        s[1].print1();
        return 0;


}
void student::sort2(student *h)
{

     int i,j;
     student s1=h[0];

    for(i=0;i<5;i++)
        for(j=i+1;j<5;j++)
            if(h[j].score>h[i].score)
        {
            s1=h[j];
            h[j]=h[i];
            h[i]=s1;
        }


}

void student::print()
{

    cout<<name<<":"<<score<<endl;
}
void student::print1()
{

    cout<<sum<<endl;
}
 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是用中文回复的程序: ```c++ #include <iostream> using namespace std; class Score { private: static int totalScore; // 静态数据成员,存储分 int score; // 学生成绩 public: Score(int s) { score = s; totalScore += s; // 每次创建对象时,累加分 } static double getAverageScore(int count) { // 静态成员函数,计算平均分 return (double)totalScore / count; } }; int Score::totalScore = ; // 静态数据成员初始化 int main() { Score s1(80); Score s2(90); Score s3(70); Score s4(85); int count = 4; // 学生人数 double avgScore = Score::getAverageScore(count); // 调用静态成员函数计算平均分 cout << "分:" << Score::totalScore << endl; cout << "平均分:" << avgScore << endl; return ; } ``` 这个程序定义了一个Score,其中包含一个静态数据成员totalScore和一个普通数据成员score,分别用于存储分和学生成绩。在每次创建对象时,都会将学生成绩累加到分中。另外,还定义了一个静态成员函数getAverageScore,用于计算平均分。 在main函数中,创建了4个学生对象,并调用了Score的静态成员函数getAverageScore计算平均分。最后输出分和平均分。 ### 回答2: 编写一个程序,可以设计一个Score用于统计一个班的学生成绩。 Score需要管理每个学生成绩并且计算分和平均分。我们可以用一个静态数据成员存储分并且使用静态成员函数计算平均分。这个需要一个指向学生的指针数组来存储学生成绩信息。 在这个中,我们需要实现以下几个函数: 1. 有参构造函数:该函数用于初始化学生信息,分配内存等。 2. 成员函数addScore:用于将学生成绩存储在指针数组中。 3. 静态成员函数calcAvg:用于计算整个班的平均分。 4. 静态成员变量totalScore:用于保存所有学生分。 以下是这个的简单实现: ```c++ class Score { public: Score(int n); ~Score(); static float calcAvg(); void addScore(int index, float score); private: int num; float **scores; static float totalScore; }; Score::Score(int n) { num = n; scores = new float*[n]; for(int i = 0; i < n; i++) { scores[i] = new float[2]; scores[i][0] = i+1; //学生的编号 scores[i][1] = 0; //学生成绩 totalScore += scores[i][1]; //累加分 } } Score::~Score() { for(int i = 0; i < num; i++) { delete[] scores[i]; } delete[] scores; } void Score::addScore(int index, float score) { scores[index-1][1] = score; } float Score::calcAvg() { return totalScore / num; } float Score::totalScore = 0; ``` 在这个的实现中,我们使用了动态内存分配来保存学生成绩信息。具体来说,在构造函数中,我们用一个二维数组存储所有学生信息。这个数组有num行,每行有2列,分别保存学生的编号和成绩。在addScore函数中,我们将每个学生成绩存储在这个数组中。在calcAvg函数中,我们使用静态成员变量totalScore来计算分,然后除以学生人数得到平均分。 这个的使用方法如下: ```c++ int main() { Score score(5); //班级人数为5 score.addScore(1, 80); score.addScore(2, 90); score.addScore(3, 70); score.addScore(4, 85); score.addScore(5, 75); cout << "班级平均分为:" << Score::calcAvg() << endl; return 0; } ``` 在主函数中,我们首先创建了一个Score对象,并且在接下来的语句中,使用了addScore函数向这个班级的学生中添加了成绩。最后,我们使用Score的静态成员函数calcAvg来计算该班级的平均分并输出结果。 ### 回答3: Score设计需要定义一个私有的静态成员变量totalScore和一个公共的静态成员函数averageScore。totalScore用来记录所有学生分,averageScore统计班级平均成绩。 首先,定义Score,并在其中定义一个静态数据成员totalScore: ```C++ class Score { private: static int totalScore; int score; public: Score(int s) : score(s) { totalScore += s; } static double averageScore(int n) { return totalScore / n; } }; ``` 在Score的构造函数中为每个学生加上成绩,并将其加到totalScore中。同时,为了计算平均分,需要传入班级的人数n,调用静态函数averageScore,计算班级平均分并返回。 接下来,我们需要测试这个Score的使用。 ```C++ int main() { Score s1(80), s2(90), s3(70); double avg = Score::averageScore(3); cout << "班级平均分:" << avg << endl; } ``` 这里我们定义了三个学生的分数,并将它们创建成Score对象。然后,我们调用Score的静态函数averageScore,并传入学生数量3。最终,输出班级平均分。 注意,由于静态成员变量和静态成员函数都属于的属性,所以我们可以直接使用名来调用它们,而不是通过Score对象访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值