1.使用动态数组来保存学生的信息。按照如下程序模板的基础上进行编写。 #define stepLength 3 //定义学生信息长度的增长步长 struct stu {//定义学生信息结构,简单起见只简单包含学生名字(字符串)和年龄(整型) //姓名 //年龄 }; int max = 5; //定义当前学生信息的最大长度 int counter = 0; //当前仓库中的学生信息数目 stu *storage; //定义学生信息的存储仓库 void add(string, int);/
时间: 2023-08-27 14:03:49 浏览: 79
以下是使用动态数组保存学生信息的示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
#define stepLength 3
struct stu {
string name;
int age;
};
int max = 5;
int counter = 0;
stu *storage;
void add(string name, int age) {
if (counter >= max) {
max += stepLength;
stu *newStorage = new stu[max];
for (int i = 0; i < counter; i++) {
newStorage[i] = storage[i];
}
delete[] storage;
storage = newStorage;
}
storage[counter].name = name;
storage[counter].age = age;
counter++;
}
int main() {
storage = new stu[max];
add("Alice", 18);
add("Bob", 20);
add("Charlie", 22);
add("David", 21);
add("Eve", 19);
add("Frank", 23);
for (int i = 0; i < counter; i++) {
cout << "Name: " << storage[i].name << ", Age: " << storage[i].age << endl;
}
delete[] storage;
return 0;
}
```
在这个示例代码中,我们首先定义了一个结构体`stu`来表示学生信息,其中包含了学生的姓名和年龄。
然后我们使用了宏定义`stepLength`来定义学生信息长度的增长步长。这个值可以根据实际情况进行调整。
接着我们定义了全局变量`max`表示当前学生信息的最大长度,`counter`表示当前仓库中的学生信息数目,以及`storage`作为学生信息的存储仓库,这里使用了动态数组的方式进行存储。
在`add`函数中,我们首先判断当前仓库是否已经满了,如果已经满了,则需要将仓库长度扩展`stepLength`个单位。然后我们新建一个临时的仓库`newStorage`,将原来的仓库中的学生信息复制到新的仓库中,再将原来的仓库释放掉,并将指针指向新的仓库。
最后我们将新的学生信息添加到`storage`中,并将`counter`增加1。
在`main`函数中,我们首先新建了一个长度为`max`的`storage`数组,然后依次添加了6个学生信息。最后我们遍历`storage`数组,将每个学生的信息打印出来。
最后别忘了在程序结束前释放`storage`数组。
阅读全文