如何打印阵列?

时间:2012-03-15 19:38:46

标签: c arrays printing multidimensional-array

int main() {  
  int my array[3][3] =
    10, 23, 42,    
    1, 654, 0,  
    40652, 22, 0  
  };  

  printf("%d\n", my_array[3][3]);  
  return 0;
}

我无法将数组打印出来..任何想法为什么?我是一名初学者,所以任何建议的话都会受到赞赏。

5 个答案:

答案 0 :(得分:25)

你正在做的是在spot [3] [3]中打印数组中的值,这对于3by3数组是无效的,你需要遍历所有的点并打印它们。

for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 3; j++) {
        printf("%d ", array[i][j]);
    }
    printf("\n");
} 

这将按以下格式打印

10 23 42
1 654 0
40652 22 0

如果您想要更精确的格式化,则必须更改printf的格式化方式。

答案 1 :(得分:11)

C中没有.length属性.length属性只能应用于面向对象编程(OOP)语言中的数组。 .length属性继承自对象类;所有其他课程和班级对象继承自OOP语言。另外,可以使用.length-1来返回数组中最后一个索引的数量;仅使用.length将返回数组的总长度。

我会建议这样的事情:

int index;
int jdex;
for( index = 0; index < (sizeof( my_array ) / sizeof( my_array[0] )); index++){
   for( jdex = 0; jdex < (sizeof( my_array ) / sizeof( my_array[0] )); jdex++){
        printf( "%d", my_array[index][jdex] );
        printf( "\n" );
   }
}

行(sizeof(my_array)/ sizeof(my_array [0]))将为您提供相关数组的大小。 sizeof属性将以字节为单位返回长度,因此必须将每个元素组成的字节数除以数组的总大小,每个元素占用4个字节,因为每个元素的类型分别为int。该数组的总大小为16个字节,每个元素为4个字节,因此16/4产生4个数组中元素的总数,因为索引从0开始而不是1。

答案 2 :(得分:3)

看起来您的阵列上有拼写错误,应该是:

int my_array[3][3] = {...

您没有_{

my_array[3][3]也是无效的位置。由于计算机从0开始计算,您正在访问位置4。 (阵列很奇怪)。

如果您只想要最后一个元素:

printf("%d\n", my_array[2][2]);

如果你想要整个阵列:

for(int i = 0; i < my_array.length; i++) {
  for(int j = 0; j < my_array[i].length; j++)
    printf("%d ", my_array[i][j]);
  printf("\n");
}

答案 3 :(得分:1)

你可以试试这个:

#include <stdio.h>

int main() 
{  
  int i,j;
  int my_array[3][3] ={10, 23, 42, 1, 654, 0, 40652, 22, 0};
  for(i = 0; i < 3; i++) 
  {
       for(j = 0; j < 3; j++) 
       {
         printf("%d ", my_array[i][j]);
       }
    printf("\n");
  } 
  return 0;
}

答案 4 :(得分:0)

如果要像在Python中打印2D列表一样打印数组:

#include <stdio.h>

int main()
{
  int i, j;
  int my_array[3][3] = {{10, 23, 42}, {1, 654, 0}, {40652, 22, 0}};
  for(i = 0; i < 3; i++)
  {
      if (i == 0) {
          printf("[");
      }
      printf("[");
      for(j = 0; j < 3; j++)
      {
         printf("%d", my_array[i][j]);
         if (j < 2) {
             printf(", ");
         }
      }
    printf("]");
    if (i == 2) {
        printf("]");
    }

    if (i < 2) {
        printf(", ");
    }
  }
  return 0;
}

输出将是:

[[10, 23, 42], [1, 654, 0], [40652, 22, 0]]