通过指针,输出对象数组的数据

这段代码演示了如何在C++中定义一个学生类,并使用对象数组存储5个学生的信息(学号和成绩)。通过指针遍历数组并输出每个学生的信息。输入样例给出了5个学生的学号和成绩,程序按照输入顺序依次输出这些信息。

通过指针,输出对象数组的数据 (15 分)
设计一个类,主函数中建立一个对象数组,输入5个学生数据(学号、成绩),用对象指针指向数组首元素,输出5个学生的数据。
输入格式:
输入5个学生数据(学号、成绩),学号为不超过10000的正整数,成绩为0-100的正整数。
输出格式:
按顺序输出学生的学号和成绩,每行显示一个学生的信息。
输入样例:
在这里给出一组输入。例如:
101 90
102 80
103 70
104 60
105 50
输出样例:
在这里给出相应的输出。例如:
101 90
102 80
103 70
104 60
105 50

#include<iostream>
using namespace std;

class student
{
public:
	int num;
	int score;
public:
	student(int num=0, int score=0)
	{
		this->num = num;
		this->score = score;
	}
};
int main()
{
	student st[5];
	student* p = st;
	for (int i = 0; i < 5; i++)
	{
		cin >> p->num >> p->score;
		cout << p->num << " " << p->score << endl;
		p++;
		
	}

	system("pause");
}

C++ 中,可以通过指针访问对象数组数据。以下是详细的说明以及实现方法。 ### 如何通过指针访问对象数组 当创建一个对象数组时,可以使用指向该类型的指针来遍历并操作这些对象。假设有一个类 `MyClass` 和其对应的对象数组: #### 定义类和对象数组 ```cpp class MyClass { public: int value; void display() const { std::cout << "Value: " << value << std::endl; } }; int main() { const int size = 5; // 数组大小 MyClass objArray[size]; // 创建对象数组 // 初始化对象数组中的数据 for (int i = 0; i < size; ++i) { objArray[i].value = i * 10; } // 使用指针访问对象数组 MyClass* ptr = objArray; // 将指针初始化为数组首地址 for (int i = 0; i < size; ++i, ++ptr) { // 遍历数组 (*ptr).display(); // 或者写成 ptr->display(); } return 0; } ``` 上述代码展示了如何利用指针访问对象数组的内容,并调用成员函数显示每个对象的状态。注意,在这里我们既可以使用解引用运算符 `(*ptr)` 来访问成员变量或函数,也可以更简洁地使用箭头运算符 `ptr->`[^1]。 ### 结合PTA7-3题目背景的应用扩展 如果按照 PTA 的风格设计一道类似的题目,则可能涉及如下需求:给定一组自定义类型的数据结构存储于动态分配的对象数组中,请编写程序完成特定查询功能。下面给出基于此思路的一个例子——统计满足条件的目标数量并打印它们的信息。 #### 示例代码片段 ```cpp #include <iostream> using namespace std; // 假设这是我们要处理的简单学生记录模型 struct Student { string name; double score; bool passed() const {return score >= 60;} }; void processStudents(Student students[], int count){ cout<<"Passed Students:"<<endl; Student *pStudent = students; while(pStudent - students < count ){ if( pStudent ->passed()){ cout<<pStudent->name<<"\t"<<pStudent->score<<endl; } ++pStudent ; } } int main(){ int numStu; cin>>numStu; Student stuList[numStu]; for(auto &stu : stuList){ cin>>stu.name>>stu.score; } processStudents(stuList,numStu); return 0; } ``` 这段代码实现了对学生列表的操作,其中包含了通过指针迭代整个数组的过程[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值