如何每行打印特定数量的数组元素
How to print specific amount of elements of array per line?
我想在数组的每一行打印 10 个元素,所以输出看起来像这样:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
...etc
这是我到目前为止的代码:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
srand(time(0));
int array[1000];
for (int i = 0; i < 1000; i++) array[i] = rand() % 1000;
sort(array, array + 1000);
for (int i = 0; i < 1000;){
i += 10;
for(int j = 0; j < i; j++){
cout << array[j] << " ";
}
cout << endl;
}
return 0;
}
但我无法让它工作。出于某种原因,它会一遍又一遍地重复所有数字。
内部循环仅使用参数列表中的j
。 它还需要考虑i
,以便它可以跳过已经打印出来的数字。
不过,有一种更简单的方法。 无需执行嵌套循环,只需每 10 个元素打印出一个新行即可。
for (int i = 0; i < 1000;) {
cout << array[i] << " ";
if ((i + 1) % 10 == 0) {
cout << endl;
}
}
这里有一个很好的紧凑答案:
const int N = 10;
for ( int i = 0; i < 1000; i++ )
{
cout << array[i] << ((i+1) % N ? " " : "n");
}
要对代码进行最小的更改,请更改以下行:
for(int j = 0; j < i; j++){
自:
for(int j = i-10; j < i; j++){
它应该大部分工作。为避免其他问题,您还需要更改:
for (int i = 0; i < 1000;){
i += 10;
自
for (int i = 10; i < 1000; i+=10) {
尽管如此,那些使用i % 10
的其他各种答案往往是更好的一般方法。
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
srand(time(0));
int array[1000];
for (int i = 0; i < 1000; i++) array[i] = rand() % 1000;
sort(array, array + 1000);
for (int i = 0; i < 1000;i += 10){
for(int j = 0; j < 10; j++){
cout << array[i+j] << " ";
}
cout << endl;
}
return 0;
}
这是一个实时版本: http://ideone.com/76ZVp8
我对原始代码所做的更改是将内部循环修复为循环从
for(int j = 0; j < i; j++){
自
for(int j = 0; j < 10; j++){
此更改的原因是您不希望在外部循环的每次迭代中从 0 循环到 i。这将为从开始时开始的外部循环的每次迭代创建一个递增的 # 输出。
由于我进行了第一次更改以将 j 从 0 限制为 9,因此下一个更改随后修复了打印输出数组索引的索引
cout << array[j] << " ";
自
cout << array[i+j] << " ";
之后,我创建了 ideone 代码并注意到仍然错误的输出。在以下代码中,数组的前 10 个成员被初始增量 10 跳过:
i += 10;
通过将此增量移动到外部 for 循环,10 的增量将发生在内部循环和我们想要的换行符之后。因此,外部 for 循环的新代码变为:
for (int i = 0; i < 1000;i += 10){
尝试以下操作
const int N = 10;
for ( int i = 0; i < 1000; i++ )
{
std::cout << array[i] << " ";
if ( ( i + 1 ) % N == 0 ) std::cout << std::endl;
}
您的问题出在内部循环中:
for(int j = 0; j < i; j++){
cout << array[j] << " ";
}
尝试再次阅读它,看看它在做什么,也许通过使用调试器逐步浏览它,你应该能够弄清楚为什么它一次又一次地打印相同的数字,以及为什么你的行变得越来越长。
您可以添加:
。
如果 ((j % 10) = 0)
添加换行
符。
添加换行符将是解决此问题的简单方法。简单表示用于描述处理的显式行为。
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 使用 GDAL 获取矢量数组中的所有行数和列数
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- c++ 使用动态分配运算符反向数组元素
- 为什么在 c++ 中分配 char 数组元素时,分配的字符会被销毁?
- PostgreSQL 将数组或记录作为行返回
- 如何在多维数组中搜索单个行,然后对某些行中的每个单个元素执行计算
- 将多种数据类型写入文件时的其他行和额外的数组元素
- 如何每行打印特定数量的数组元素
- 我正在尝试使我的 2-D 数组程序获取每行中最大的元素,但它不起作用
- 获取动态二维数组元素的行/列