Как распечатать двумерный массив, который инициализируется в функции main в C? - PullRequest
0 голосов
/ 12 декабря 2018
void print2DArray(int aRRay[][COLS], int r, int c);
int main()
{
    int aRRay[ROWS][COLS];
    int n;

    int r, c;
    srand(time(NULL));
    for (r = 0; r < ROWS; r++)
    {
        for (c = 0; c < COLS; c++)
        {
            aRRay[r][c] = -40 + rand() % (80 + 1 - (-40));
        }
    }

print2DArray(aRRay[r][c], r, c);

printf("Enter an integer between -40 and 80: \n");
scanf("%d", &n);
while (n >= 40 || n <= -80)
{
    printf("Thie is an invalid integer, please re-enter an integer between 
     -80 and 40");
    scanf("%d", &n);
}

return 0;
}
void print2DArray(int aRRay[][COLS], int r, int c) 
statement
{
int j, k;
for (j = 0; j < ROWS; j++)
{
    for (k = 0; k < COLS; k++)
    {
        printf("%d ", aRRay[r][c]);
    }
    printf("\n");
}
}

Как распечатать двумерный массив, который инициализирован в функции main в C?Как мне заставить функцию работать?Я должен использовать генератор случайных чисел, чтобы создать числа для моего 2D-массива, а затем распечатать его в функции void.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Как распечатать двумерный массив ...?

Код OP неверен:

// printf("%d ", aRRay[r][c]);
printf("%d ", aRRay[j][k]);

Как это инициализируется / назначается, не такважный.Сначала передайте размеры функции печати, а затем массиву.

Размеры массива лучше всего набирать как size_t, чем int.

// C99 solution using a variable length array

void print2DArray(size_t rows, size_t cols, int aRRay[rows][cols]) {
  for (size_t r = 0; r < rows; r++) {
    for (size_t c = 0; c < cols; c++) {
      printf("%d ", aRRay[r][c]);
    }
    printf("\n");
  }
}

Пример использования

#define ROWS 6
#define COLS 7

int main() {
  int aRRay[ROWS][COLS];
  size_t r, c;
  int n = 0;
  for (r = 0; r < ROWS; r++) {
    for (c = 0; c < COLS; c++) {
      aRRay[r][c] = ++n;
    }
  }
  print2DArray(ROWS, COLS, aRRay);
  int bRRay[2][3] = {{11,12,13}, {14,15,16}};
  print2DArray(2,3, bRRay);
}

Вывод

1 2 3 4 5 6 7 
8 9 10 11 12 13 14 
15 16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 32 33 34 35 
36 37 38 39 40 41 42 
11 12 13 
14 15 16 

У ОП было "Я должен использовать генератор случайных чисел для создания чисел для моего двумерного массива", что нормально.Выше приведено использование ++n, поскольку оно более наглядно.

См. Также Передача многомерного массива переменной длины в функцию .

0 голосов
/ 12 декабря 2018

int ваше последнее назначение {printf("%d ", aRRay[r][c]); } сделайте это вместо {printf("%d ", aRRay[j][k]); }.Поскольку вы делаете цикл, но вы не используете свой цикл, чтобы делать что-либо, используйте j и k для цикла в вашем printf.Надеюсь, это поможет !!

...