C++第5周项目4 - 指针操作学生类

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847【项目4】设计一个学生类Student,包括学号(num)和成绩(score)。建立一个对象数组,通过初始化,设置5个学生的数据,要求:  (

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847


【项目4】设计一个学生类Student,包括学号(num)和成绩(score)。建立一个对象数组,通过初始化,设置5个学生的数据,要求:
  (1)用指针指向数组首元素,输出第1、3、5个学生的信息;
  (2)设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号。


参考解答:

#include <iostream>
using namespace std;

class Student
{
public:
	Student(int n,double s):num(n),score(s){}
	void display();
	int getNum(){return num;}
	double getScore(){return score;}
private:
	int num;
	double score;
};

void Student::display()
{
	cout<<num<<" "<<score<<endl;
}

int max(Student *arr);

int main()
{
	Student stud[5]={
		Student(101,78.5),Student(102,85.5),Student(103,100),
		Student(104,98.5),Student(105,95.5)};

		//输出第、、个学生的信息
		for(int i=0;i<5;i+=2)
		{
			cout<<"学生"<<i+1<<": ";
			stud[i].display();
		}
		//找出个学生中成绩最高者,并输出其学号
		cout<<"5个学生中成绩最高者的学号为: "<<max(stud);

		system("pause");
		return 0;
}

int max(Student *arr)
{
	double max_score=arr[0].getScore();//通过公共的成员函数取出私立有的数据成员,用好此法
	int k=0;
	for(int i=1;i<5;i++)
		if(arr[i].getScore()>max_score) 
		{
			max_score=arr[i].getScore();
			k=i;
		}
		return arr[k].getNum();
}


目录
相关文章
|
2天前
|
C++ 容器
C++中向量的操作vector
C++中向量的操作vector
|
5天前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
38 9
|
22小时前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
19小时前
|
设计模式 安全 编译器
【C++11】特殊类设计
【C++11】特殊类设计
21 10
|
22小时前
|
存储 编译器 C语言
【C++基础 】类和对象(上)
【C++基础 】类和对象(上)
|
9天前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以&#39;\0&#39;结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加&#39;\0&#39;。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。
|
9天前
|
存储 C++
【C++】string类的使用③(非成员函数重载Non-member function overloads)
这篇文章探讨了C++中`std::string`的`replace`和`swap`函数以及非成员函数重载。`replace`提供了多种方式替换字符串中的部分内容,包括使用字符串、子串、字符、字符数组和填充字符。`swap`函数用于交换两个`string`对象的内容,成员函数版本效率更高。非成员函数重载包括`operator+`实现字符串连接,关系运算符(如`==`, `&lt;`等)用于比较字符串,以及`swap`非成员函数。此外,还介绍了`getline`函数,用于按指定分隔符从输入流中读取字符串。文章强调了非成员函数在特定情况下的作用,并给出了多个示例代码。
|
9天前
|
C++
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
16天前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
23小时前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下