Подтвердить что ты не робот

Как печатать массив?

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

Я не могу получить массив для печати. ​​Любые идеи, почему? Я начинаю программист, поэтому любые слова совета ценятся.

4b9b3361

Ответ 1

То, что вы делаете, это печатать значение в массиве в точке [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.

Ответ 2

В C. не существует свойства .length. Свойство .length может быть применено только к массивам в языках с объектно-ориентированным программированием (ООП). Свойство .length наследуется от класса объекта; класс всех других классов и объектов, наследуемых на языке ООП. Кроме того, можно использовать .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.

Ответ 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");
}

Ответ 4

Вы можете попробовать следующее:

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