尝试在C中打印100行数组值的10行

时间:2018-10-07 23:51:44

标签: c arrays sorting printf

我有一个包含100个数字的数组,我试图将其打印出来,每行只有10个整数,并且每个数字之间都有一个制表符。它只打印前10个整数,然后停止,这是因为我的for循环才有意义。我显然缺少它的一部分,以允许它继续通过数组。我打算尝试添加行

for(int line_num = 0; line_num < 10; line_num+=10)

while循环之后的for语句之前

int array_value;
int length_of_array = 100;

while (length_of_array <= 100){
    for(array_value = 0; array_value < 10; ++array_value){
        printf("%d  ", A[array_value]);
        ++length_of_array;      
    }

我还考虑添加这样的一行

if (array_value % 10 == 0)
            printf("\n");

我知道了!在下面发布答案。

5 个答案:

答案 0 :(得分:1)

为清楚起见,将length_of_array重命名为offset_in_array,然后在开始时将其设置为零。我重命名了array_value并更正了您的长度检查。我还向内部循环添加了一个检查,以防数组长度发生变化并且不被10除。
像这样:

int i;
#define ARRAY_LENGTH 100
int offset_in_array = 0;

while (offset_in_array < ARRAY_LENGTH){
    for(i = 0; i < 10 && offset_in_array < ARRAY_LENGTH; ++i){
        printf("%d  ", A[offset_in_array]);
        ++offset_in_array;      
    }
}

我还没有尝试运行它,但是应该更近一些。

答案 1 :(得分:1)

只需每十分之一打印换行符...如果不是十分之一,则打印一个制表符。

for (size_t i = 0; i < array_length; ++i) {
    printf("%d%c", A[i], i % 10 != 9 ? '\t' : '\n');
}

可通过onlinedbg获得实时代码。

答案 2 :(得分:1)

这可能是您想要的:

/* test.c  */

#include <stdio.h>

#define ELEMENTS    100 

int main (void)
{
    int array [ELEMENTS];

    for ( int i = 0; i < ELEMENTS; ++i )
        array [i] = i;

    for ( int i = 0; i < ELEMENTS; ++i ) {
        printf ("%i", array[i]);
        if ( (i + 1) % 10 != 0 )
            printf ("\t");
        else
            printf ("\n");
    }

    return 0;
}

编辑:由于制表符可以扩展到该行末尾的下一行,因此您必须小心使用制表符和换行符。

答案 3 :(得分:1)

只需将length_of_array的值更改为0,并在\n循环后打印for

int array_value;
int length_of_array = 0;

while (length_of_array <= 100) {
    for(array_value = 0; array_value < 10; ++array_value){
        printf("%d  ", A[array_value]);
        ++length_of_array;      
    }
    printf("\n");
}

答案 4 :(得分:0)

您可以使用以下解决方案在C中打印10行,每行100个数组值:

for (int i = 0; i < 100; ++i){
    printf("%i\t", A[i]);
    if ((i+1)%10 == 0){
        printf("\n");
    }
}