完善这段代码:int main() { int max = 5; //定义当前学生信息的最大长度 int counter = 0; //当前仓库中的学生信息数目 stu* storage; //定义学生信息的存储仓库 void add(string, int);//定义添加学生的函数 storage = new student[max];;//初始化仓库,申请能存储max个学生信息结构体的空间 for (int i = 0; i <= 9; i++) {//添加10个学生信息 //姓名为“姓名”+“i”的形式,使用to_string(i),将i转换为字符。 //年龄使用生成一个17到21之间的随机整数。 //调用函数add,进行信息的添加。 } //打印学生的信息:cout << "+--------------学生信息列表 ------------+" << endl; //通过for循环打印学生信息。 //释放申请的空间。 }
时间: 2023-11-27 11:03:43 浏览: 52
在代码中添加添加学生信息的 `add` 函数,以及循环添加学生信息和打印学生信息的代码。修改后的代码如下:
```
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
struct student {
string name;
int age;
};
int main() {
int max = 5; //定义当前学生信息的最大长度
int counter = 0; //当前仓库中的学生信息数目
student* storage; //定义学生信息的存储仓库
void add(string, int); //定义添加学生的函数
storage = new student[max];//初始化仓库,申请能存储max个学生信息结构体的空间
srand(time(NULL)); // 设置随机数种子
for (int i = 0; i <= 9; i++) {//添加10个学生信息
string name = "姓名" + to_string(i);
int age = rand() % 5 + 17; //生成一个17到21之间的随机整数
add(name, age);//调用函数add,进行信息的添加。
}
//打印学生的信息
cout << "+--------------学生信息列表 ------------+" << endl;
for (int i = 0; i < counter; i++) {
cout << "姓名:" << storage[i].name << ", 年龄:" << storage[i].age << endl;
}
//释放申请的空间
delete[] storage;
return 0;
}
void add(string name, int age) {
extern student* storage;
extern int max, counter;
if (counter == max) {
// 如果仓库已满,扩容为原来的两倍
max *= 2;
student* new_storage = new student[max];
for (int i = 0; i < counter; i++) {
new_storage[i] = storage[i];
}
delete[] storage;
storage = new_storage;
}
storage[counter].name = name;
storage[counter].age = age;
counter++;
}
```
在这个示例中,我们首先定义了一个 `add` 函数,用于向学生信息存储仓库中添加一个新的学生信息。然后,我们使用 `rand()` 函数生成一个 17 到 21 之间的随机整数作为学生的年龄,并使用 `add` 函数添加学生信息。如果仓库已满,则在添加学生信息之前将仓库扩容为原来的两倍。最后,我们使用一个循环来打印学生的信息,并使用 `delete[]` 运算符释放申请的空间。
阅读全文