08-B. 最高成绩(静态成员)

该博客介绍了如何在C++中使用静态成员和友元函数来查找一组学生数据中的最高分数及其对应学号。通过创建一个学生类,包含学号、成绩、最高分数和最高分数学号的静态成员,以及用于更新最高分和学号的静态成员函数,实现了对输入数据的处理。在main函数中,读取学生数据并调用静态成员函数找出最高分和学号,最后输出结果。

08-静态成员与友元
题目描述
学生类定义如下:
class Student {
private:
int id; //学号
int score; //成绩
static int maxscore; //最高分数
static int maxid; //最高分数学生学号
public:
Student(int ti=0, int ts=0)
:id(ti), score(ts)
{}
static void findMax(Student & st); //寻找最高成绩和学号
static int getMaxScore(); //返回最高成绩
static int getMaxID(); //返回最高成绩的学号
};
输入一组学生学号和成绩,用上述静态成员求最高成绩和对应学号

输入
第一行输入n表示有n个学生
接着输入n行,每行包括两个数据,表示学号和成绩

输出
调用静态成员函数输出学号和最高成绩,格式看样例

输入样例
3
1002 68
1023 54
1045 32

1002–68

#include <iostream>
using namespace std;

class student
{
    int id;
    int score;
    static int maxscore;
    static int maxid;
    
public:
    student(int ti=0,int ts=0):id(ti),score(ts){}
    //student():id(0),score(0){}
    //student(int ti,int ts):id(ti),score(ts){}
    static void findmax(student &st);
    
    static int getmaxscore();
    static int getmaxid();
    
    int getid()
    {return id;}
    int getscore()
    {return score;}
};

int student::maxscore=0;
int student::maxid=0;

int student::getmaxscore()
{return maxscore;}
int student::getmaxid()
{return maxid;}

void student::findmax(student &st)//静态成员函数只能使用静态数据成员!
{
    if(st.getscore()>maxscore)
    {
        maxscore=st.getscore();//所以这里要st.getscore() 不可以直接使用
        maxid=st.getid();
    }
}

int main()
{
    int n,id,score;
    cin>>n;
    while(n--)
    {
        cin>>id>>score;
        student a(id,score);
        student::findmax(a);
    }
    cout<<student::getmaxid()<<"--"<<student::getmaxscore()<<endl;
    return 0;
}

一、实验目的 1、懂得如何分析问题域中存在的各对象; 2、掌握如何用类来统一描述这些具有共同属性和功能的对象,掌握类的定义; 3、理解类和对象之间的关系,并掌握如何访问类中的成员,要求实现类的封装; 4、掌握类中的构造函数的功能及使用; 5、掌握类的方法的重载; 6、掌握类中的静态成员及使用。 二、实验内容 1、定义学生类及教师类,要求给出类中必要的成员,并实现对某学生或某教师的信息的输出。 2、设计一个图书类,实现对图书总销售量的统计,可参考下列类图设计,如有需要,可自添加其他成员。 测试时要求: (1)创建一个无参的书本对象,通过访问器对书本信息进赋值,并调用sale()方法,然后输出图书书名、库存数量、总销售额等信息。 如: Books book1=new Books(); (2)创建一个带参的书本对象,实现对图书信息的初始化,并调用sale()方法,然后输出图书书名、库存数量、总销售额等信息。 如: Books book2=new Books(“面向对象程序设计”,”978-7-302-48907-8”,”清华大学出版社”,45.0,200); book2.sale(100); book2.sale(50); Books -bookName:String(书名) -bookIsbn:String(图书ISBN号) -press:String(出版社) -price:double(图书价格) -number:int(图书库存数量) -totalSale:double(销售总额) + Books() (完成对图书基本信息的初始化,可赋一些初值,如图书ISBN号默认值为“0000000000000”) + Books(String,String,String,double,int) (完成对图书基本信息的初始化) +print():void (打印图书基本信息) +sale(int):double (计算并返回图书销售额) …… 3、附加题 定义一个类Student,根据以下输入和输出描述,设计该类成员,通过getSumScore()和average()计算全班学生的《面向对象程序设计》课程的总成绩和平均成绩,要求使用静态成员变量或静态成员方法。 输入描述 学生姓名 课程成绩 输出描述 总成绩和平均成绩 比如 输入 Zhang 82 Li 79 Wang 93 Liu 66 Xia 90 输出 总成绩:410 平均成绩:82
最新发布
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值