C 如何像网格一样打印阵列?
你好,我是编程新手,我需要打印一个数组(必须是一维的),就像网格一样。我已经试了几个小时,但仍然没有得到我想要的结果。 数组有16个值,因此网格如下所示: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
___________
|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;
}