前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最高成绩(静态成员)

最高成绩(静态成员)

作者头像
叶茂林
发布2023-07-30 09:47:40
1730
发布2023-07-30 09:47:40
举报
文章被收录于专栏:叶子的开发者社区

题目描述

学生类定义如下:

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行,每行包括两个数据,表示学号和成绩

输出

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

输入样例1

3 1002 68 1023 54 1045 32

输出样例1

1002--68

思路分析

主要是静态成员数据和静态成员函数的问题。

静态成员数据必须在类外和主函数外定义,因为类声明只是声明而已,并没有给变量分配内存空间,而静态成员数据必须有定义,而不能只是声明,否则会编译错误,如果静态成员数据在定义时未赋初值,那么系统会自动赋初值为0。

还有就是静态成员数据的修改,只能通过类内定义的成员函数进行修改。

非静态成员可以访问非静态数据和静态数据,但静态数据只能访问静态数据,静态成员函数只能访问类内的静态数据成员,如果要想访问类内非静态数据成员,可以通过类对象来访问。

最后就是找最高成绩,显然不能通过排序的方式,因为题目给定了找最高成绩的成员函数声明,还是个静态成员函数,只能通过一一比较。

AC代码

代码语言:javascript
复制
#include<iostream>
using namespace std;
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();//返回最高成绩的学号
};
int Student::maxscore=0;
int Student::maxid=0;
void Student::findMax(Student & st)
{
	if(st.score>maxscore)
	{
		maxscore=st.score;
		maxid=st.id;
	}
}
int Student::getMaxScore()
{
	return maxscore;
}
int Student::getMaxID()
{
	return maxid;
}
int main()
{
	int n,id,score;
	cin>>n;
	while(n--)
	{
		cin>>id>>score;
		Student st(id,score);
		Student::findMax(st);	
	}
	cout<<Student::getMaxID()<<"--"<<Student::getMaxScore()<<endl;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档