C++如何循环调用类方法实现多名estudiante信息录入与输出
解决方案
实现思路
要实现先录入3名学生信息再统一打印,只需要调整存储结构和循环逻辑即可,核心是用数组存储多个学生对象,拆分录入和输出为两个独立的循环流程。
修改后完整代码
#include <iostream> #include <string> // 原代码用到string但未引入对应头文件,此处补充引入避免编译报错 #include <array> using namespace std; class estudiante { private: string nombre,cedula,codigo,direccion; public: // 新增序号参数,用于显示当前录入的是第几个学生 void getDetalles(int idx); void setDetalles(int idx); }; void estudiante::getDetalles(int idx){ cout << "Ingrese el nombre del estudiante " << idx << ":" ; cin >> nombre; cout << "Ingrese el numero de cedula: "; cin >> cedula; cout << "Ingrese el codigo: "; cin >> codigo; cout << "Ingrese la direccion: "; cin >> direccion; cout << endl; } void estudiante::setDetalles(int idx){ cout << "La informacion de estudiante " << idx << ": \n"; cout << "Nombre:" << nombre << "\n"; cout << "Cedula:" << cedula << "\n"; cout << "Codigo:" << codigo << "\n"; cout << "Direccion:" << direccion << "\n"; } int main() { const int STU_COUNT = 3; // 定义数组存储3个学生对象 estudiante stus[STU_COUNT]; // 第一轮循环:录入所有学生信息 for(int i = 0; i < STU_COUNT; i++){ stus[i].getDetalles(i+1); } // 第二轮循环:统一打印所有学生信息 cout << "======== 所有学生详情 ========\n"; for(int i = 0; i < STU_COUNT; i++){ stus[i].setDetalles(i+1); cout << "-----------------------------\n"; } return 0; }
核心修改说明
- 移除了冗余的全局变量x,改为将学生序号作为参数传入成员函数,避免全局变量被意外篡改导致逻辑错误
- 补充了
<string>头文件引入,修复部分编译器下因缺失头文件产生的编译报错 - 修复了原getDetalles函数中多余的反引号语法错误
- 主函数中定义固定长度的学生对象数组,存储3名学生的全部信息
- 拆分逻辑为两个独立循环:先完成所有学生信息录入,再统一输出所有学生详情,完全匹配需求
内容的提问来源于stack exchange,提问作者user16839362
相关产品推荐
相关产品推荐

