c++ - 需要生成x(输入)个字母,然后将它们放入4的char数组中
问题描述
输入只能是 5、7 或 9。假设在这种情况下输入是 5,所以程序生成 5 * 4 个字母:“DECBEDBDEDACBEAAC B”,现在我需要将它们放入 4 的数组中,所以 5 个字符数组,但我不知道该怎么做。这是我生成字母的方式。我把所有生成的都放在一个 char 数组中,但我也不知道如何将它分成 4 个更小的 char 数组。另一个问题是,正如我所提到的,每次运行时输入都会发生变化,但可以是 5、7或 9,所以程序不知道它需要多少个 4 数组。
由于条款,我不能使用向量,只能使用标准库。
for (int i = 0; i < (input * 4); ++i) {
int n = (rand() % 5) + 1;
char kar = (char) (n + 64);
letters[i] = kar;
}
如果我将所有生成的字母放在一个数组中,这是我打印它的方式:
for (int j = 0; j < input* 4; ++j) {
if (j % 4 == 0) {
cout << "\nLetters in the " << (j / 4) + 1 << ". array: ";
}
cout << letters[j] << " ";
}
我需要像现在这样的输出,但使用分离的数组。
Letters in the 1. array: D E C B
Letters in the 2. array: E D E D
Letters in the 3. array: B D E D
Letters in the 4. array: A C B E
Letters in the 5. array: A A C B
解决方案
你所需要的只是嵌套数组,就像这样letters[][]
。
但是,您不能在 c++ 中拥有可变大小的数组。但是你的上限是 9,所以你可以
char letter[9][4];
for (int i = 0; i < input; ++i)
for (int j = 0; j < 4; ++j)
letter[i][j] = ...
我建议使用std::vector
。您要求“由于条款,我不能使用向量,只能使用标准库。” 似乎很矛盾。
此外,请避免在此处使用 c 样式强制转换(char) (n + 64)
。宁愿做static_cast<char>(n + 64)
。
此外,rand()
不推荐生成随机数的方法。有关如何很好地生成随机数的示例,请参见this 。
推荐阅读
- php - 递归函数在 CodeIgniter 4 中不起作用
- google-sheets - 谷歌表格汇总多列
- html - When select dropdown directive for submit on press 'Enter' no more work
- javascript - 如何删除事件处理程序的绑定版本?
- qml - 如何在 QML 中检测双指双击?
- nestjs - 如何使用@nestjs/terminus 为 Prisma 创建自定义健康检查?
- plugins - 如何不加载图表之前的数据?
- prolog - 毕达哥拉斯定理用于计算两点之间的距离。序言
- flutter - 自定义方案未调用 webview_flutter navigationDelegate
- python - 安装 trimmomatic 时出现 Anaconda CondaVerificationError