C++不使用vector实现向数组末尾插入元素的问题咨询
C++代码修正说明
原有代码存在的问题
- 命名空间引用错误:
cout、cin属于std命名空间,未加前缀或引入命名空间会直接编译失败 - 变量类型不符合需求:你定义的
name、score是单个char类型,仅能存储一个字符,无法存储完整的姓名、分数;一维字符数组仅能存储1个字符串,要存储10组玩家数据需要使用二维字符数组,或更安全的std::string类型 - 基础语法错误:第二个
cout语句末尾缺失分号;for循环的条件分隔符应为分号,且循环变量i未提前声明类型 - 数组追加逻辑缺失:没有变量记录数组当前已存储的元素数量,无法定位数组末尾执行追加操作
可运行的修正代码
以下代码实现最多存储10组玩家数据,每次输入后追加到数组末尾的逻辑:
#include <iostream> // 定义数组最大存储量 const int MAX_PLAYER = 10; int main() { // 二维数组存储10个玩家姓名,每个姓名最多支持19个字符 char playerName[MAX_PLAYER][20]; // 数组存储10个玩家分数 int playerScore[MAX_PLAYER]; // 记录当前已存储的玩家数量,也用于定位数组末尾位置 int curSize = 0; // 循环输入10次的逻辑,不需要可以去掉外层for循环 for (int i = 0; i < MAX_PLAYER; i++) { char inputName[20]; int inputScore; std::cout << "输入第" << curSize + 1 << "个玩家姓名:"; std::cin >> inputName; std::cout << "输入第" << curSize + 1 << "个玩家分数:"; std::cin >> inputScore; // 追加到数组末尾 for (int j = 0; inputName[j] != '\0'; j++) { playerName[curSize][j] = inputName[j]; } playerScore[curSize] = inputScore; curSize++; std::cout << "添加成功,当前已存储" << curSize << "组数据\n" << std::endl; } return 0; }
如果你只需要单次输入追加,去掉外层的for循环,额外加curSize < MAX_PLAYER的越界判断即可。
内容的提问来源于stack exchange,提问作者admin3333
相关产品推荐
相关产品推荐

