【C++之对象数组和对象指针2】找到成绩最高的学生

简介: 【C++之对象数组和对象指针2】找到成绩最高的学生

题目要求


建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数 max ,用指向对象的指针作函数参数,在 max 函数中找到5个学生中的成绩最高者,并输出其学号。


——谭浩强的《C++面向对象程序设计》第3章习题第5小题


程序


student.h


/*
*************************************************************************
@file:    student.h
@date:   2020.11.7
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109541159
*************************************************************************
*/
#include <iostream>
using namespace std;
class Student // 声明类类型
{
private: // 声明私有部分
  int num;   // 学号
  int score;       // 成绩
public: // 声明公用部分
  Student(int n, int s) : num(n), score(s) {}; // 定义带参数的构造函数,并用参数的初始化表对数据成员初始化
  void max(Student *);                         // 找到成绩最高的学生,并输出其学号
};


student.cpp


/*
*************************************************************************
@file:    student.cpp
@date:   2020.11.7
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109541159
*************************************************************************
*/
#include"student.h"
// 类外定义成员函数
void Student::max(Student *arr)   // 找到成绩最高的学生,并输出其学号
{
  int max_score = arr[0].score; // 记下最高成绩
  int max_num = 0;              // 记下成绩最高的学生的学号
  for (int i = 0; i < 5; i++)
  {
  if (arr[i].score > max_score)
  {
    max_score = arr[i].score;
    max_num = i;
  }
  }
  cout << "The number of student who get the highest score:"<< endl << arr[max_num].num << endl;
}


main.cpp


/*
*************************************************************************
@file:    main.cpp
@date:   2020.11.7
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109541159
*************************************************************************
*/
#include "student.h"
int main()
{
  Student stu[5] = {
  Student(1, 96),
  Student(2, 97),
  Student(4, 99),
  Student(8, 100),
  Student(16, 98)
  }; // 定义对象数组
  Student *p;    // 定义p为指向Student类对象的指针变量
  p = stu;       // 将stu的起始地址赋给p
  // 或:Student *p = stu;
  stu[5].max(p); // 调用对象stu[5]的公有成员函数max
  system("pause");
  return 0;
}


运行结果



相关文章
|
1月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
35 0
|
10天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
39 4
|
12天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
35 4
|
27天前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
24 4
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
17 0
|
1月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
31 0
|
1月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
34 0
|
1月前
|
编译器 C++
C++之类与对象(3)(上)
C++之类与对象(3)
17 0