C 如何像网格一样打印阵列?

C 如何像网格一样打印阵列?,c,arrays,counter,C,Arrays,Counter,你好,我是编程新手,我需要打印一个数组(必须是一维的),就像网格一样。我已经试了几个小时,但仍然没有得到我想要的结果。 数组有16个值,因此网格如下所示: ___________ |0 |1 |2 |3 | |4 |5 |6 |7 | |8 |9 |10|11| |12|13|14|15| ––––––––––––– 我的代码: #include <stdio.h> void display_grid(void) { int i; int j; int cell[1

你好,我是编程新手,我需要打印一个数组(必须是一维的),就像网格一样。我已经试了几个小时,但仍然没有得到我想要的结果。 数组有16个值,因此网格如下所示:

 ___________
|0 |1 |2 |3 |
|4 |5 |6 |7 |
|8 |9 |10|11|
|12|13|14|15|
–––––––––––––
我的代码:

#include <stdio.h>

void display_grid(void)
{
  int i;
  int j;
  int cell[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

  for (i = 0; i < 4; i++)
    {
      printf("|");
      for (j = 0; j < 16; j++)
      {
        printf("%d|",cell[j]);
      }
        printf("\n");
    }
}

int main()
{
  display_grid();
  return 0;
}

我有一种感觉:我把
cell[j]
改为
cell[4*I+j]

#include <stdio.h>

void display_grid(void)
{
  int i;
  int j;
  int cell[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

  for (i = 0; i < 4; i++)
    {
      printf("|");
      for (j = 0; j < 4; j++)
      {
        printf("%d|",cell[4 * i + j]);
      }
        printf("\n");
    }
}

int main()
{
  display_grid();
  return 0;
}
#包括
空心显示网格(空心)
{
int i;
int j;
int cell[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
对于(i=0;i<4;i++)
{
printf(“|”);
对于(j=0;j<4;j++)
{
printf(“%d |”,单元格[4*i+j]);
}
printf(“\n”);
}
}
int main()
{
显示网格();
返回0;
}

这有帮助吗?

您可以使用余数运算符
%
来确定何时在新行上打印。下面是一个带有
display\u grid()
函数的示例程序,该函数将
int
数组、数组大小以及所需的每行大小作为参数。如果可以将数组平均划分为所需列数的行,则返回零。否则将返回一个非零值。这允许您以各种网格格式显示1d阵列;如果数组不能被平均分割,则不会打印任何内容

目前,这将打印包含最多2个数字(或1个数字和一个符号)的数字的网格。修改它以打印更多的数字,或者修改稍微复杂一点,以便显示宽度适合输入所需的最大宽度,这将很简单

#include <stdio.h>

#define ARR_SZ  16

int display_grid(int *arr, size_t arr_sz, size_t row_sz);

int main(void)
{
    int array[ARR_SZ];
    for (size_t i = 0; i < ARR_SZ; i++) {
        array[i] = i;
    }

    size_t row_sz = 4;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 8;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 2;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 1;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 16;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 6;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 32;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    return 0;
}

int display_grid(int *arr, size_t arr_sz, size_t row_sz)
{
    int ret_val = arr_sz % row_sz;

    if (ret_val == 0) {
        /* Print top border */
        putchar(' ');
        for (size_t i = 1; i < 3 * row_sz; i++) {
            putchar('_');
        }
        putchar('\n');

        /* Print rows of grid */
        for (size_t i = 0; i < arr_sz; i++) {
            printf("|%-2d", arr[i]);
            if ((i + 1) % row_sz == 0) {
                printf("|\n");
            }
        }

        /* Print bottom border */
        for (size_t i = 0; i < 3 * row_sz + 1; i++) {
            putchar('-');
        }
        putchar('\n');
    }

    return ret_val;
}
#include <stdio.h>

#define ARR_SZ  16

int display_grid(int *arr, size_t arr_sz, size_t row_sz);

int main(void)
{
    int array[ARR_SZ];
    for (size_t i = 0; i < ARR_SZ; i++) {
        array[i] = i;
    }

    size_t row_sz = 4;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 8;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 2;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 1;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 16;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 6;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    row_sz = 32;
    if (display_grid(array, ARR_SZ, row_sz) != 0) {
        fprintf(stderr, "Array size not evenly divisible by %zu\n", row_sz);
    }

    return 0;
}

int display_grid(int *arr, size_t arr_sz, size_t row_sz)
{
    int ret_val = arr_sz % row_sz;

    if (ret_val == 0) {
        /* Print top border */
        putchar(' ');
        for (size_t i = 1; i < 3 * row_sz; i++) {
            putchar('_');
        }
        putchar('\n');

        /* Print rows of grid */
        for (size_t i = 0; i < arr_sz; i++) {
            printf("|%-2d", arr[i]);
            if ((i + 1) % row_sz == 0) {
                printf("|\n");
            }
        }

        /* Print bottom border */
        for (size_t i = 0; i < 3 * row_sz + 1; i++) {
            putchar('-');
        }
        putchar('\n');
    }

    return ret_val;
}