c - 用C语言在用户指定的列中打印一维数组

标签 c arrays

我正在尝试以用户指定的列数显示数组的元素。他们决定数组有多大以及将在多少列中显示。现在,我正在按列打印数组的元素,但是,我有额外的行和列,其中的数字不在数组中。因此,如果我选择数组大小和列数为 5 3,我希望看到:

1 3 5
2 4

相反,我得到类似的东西:

1 3 5
2 4 107863456 
128976543 58764 896543221
5643217 90876543456 8976543

我得到 3 列 4 行。我不知道为什么会这样。这是我处理创建列的代码部分,如果需要更多代码请告诉我(x 是包含数组大小的变量,y 包含列数):

void colDisplay(int *aPtr, int x, int y) {
    int i, j;

    srand(time(NULL));

    for(i = 0; i < x; i++) {
        aPtr[i] = rand()%5+1;
    }

    /*Trying to format display for number of columns used*/
    printf("Unsorted columns\n");
    for(i = 0; i < x; i++) {
        for(j = 0; j < y; j++) {
            //printf("%d = %d ", (i*y)+j, aPtr[(i*y)+j]);
            printf("%d ", aPtr[(i*y)+j]);
        }
        printf("\n");
    }
}

最佳答案

内部循环正确地计算列数,但外部循环使用 x 作为行计数,而不是项目计数。要解决此问题,您可以使用一个循环来计算项目,并在正确的时间输出换行符。

j = 0;
for ( i = 0; i < x; i++ )
{
    printf("%d ", aPtr[i] );
    j++;
    if ( j == y || i == x-1 )
    {
        printf( "\n" );
        j = 0;
    }
}

关于c - 用C语言在用户指定的列中打印一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961087/

相关文章:

用于嵌入式系统的 C XML 库

在 linux 驱动程序中定期调用 spi_write

c - argv[] 中的 Int 中断并仅打印 int

c++ - 以这种方式实现 BST 的最有效方法是 find(value) 函数针对 x86 上树中的随机值进行优化?

javascript - 更新函数返回的数组

sql - 如何避免关系数据库中的数组?

c - HTTP 服务器编程

ios - 目标 - C、协议(protocol)、数组、字典 - 测试

c++ - 我不明白这段代码是如何在 MS Visual C++ 编译器中执行的

javascript - 将字符串转换为分隔对象键