web-dev-qa-db-ja.com

配列を印刷する方法は?

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;
}

配列を印刷することができません。私は初心者プログラマーですので、アドバイスをいただければ幸いです。

34
Shankar Kumar

あなたがしていることは、スポット[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のフォーマット方法を変更する必要があります。

27
twain249

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プロパティは長さをバイト単位で返すため、配列の合計サイズをバイト単位で各要素を構成するバイト数で割る必要があります。各要素はそれぞれint型であるため、各要素は4バイトを占有します。配列の合計サイズは16バイトで、各要素は4バイトであるため、インデックス付けは1ではなく0から始まるため、16/4は配列内の要素の合計数4になります。

11
Jake

配列にタイプミスがあるように見えます。

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
Jon Egeland

これを試すことができます:

#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;
}
1
user4309687