Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Мастерство многомерных массивов в C: 2D и 3D массивы подробно

Многомерные массивы в C

В этом уроке вы научитесь работать с многомерными массивами (двумерными и трёхмерными) с помощью примеров.

В программировании на C можно создавать массив массивов. Такие массивы называются многомерными. Например,

float x[3][4];

Здесь x — двумерный (2D) массив. Массив может содержать 12 элементов. Можно представить массив как таблицу с 3 строками и 4 столбцами в каждой.

Мастерство многомерных массивов в C: 2D и 3D массивы подробно

Аналогично можно объявить трёхмерный (3D) массив. Например,

float y[2][4][3];

Здесь массив y может содержать 24 элемента.


Инициализация многомерного массива

Вот как можно инициализировать двумерные и трёхмерные массивы:


Инициализация 2D массива

// Разные способы инициализации двумерного массива
int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[2][3] = {1, 3, 0, -1, 5, 9};

Инициализация 3D массива

Трёхмерный массив можно инициализировать похожим образом, как двумерный. Пример:

int test[2][3][4] = {
    {{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
    {{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}
};

Пример 1: Двумерный массив для хранения и вывода значений

// C программа для хранения температуры двух городов за неделю и вывода
#include <stdio.h>
const int CITY = 2;
const int WEEK = 7;
int main() {
    int temperature[CITY][WEEK];
    // Использование вложенных циклов для сохранения значений в 2D массиве
    for (int i = 0; i < CITY; ++i) {
        for (int j = 0; j < WEEK; ++j) {
            printf("City %d, Day %d: ", i + 1, j + 1);
            scanf("%d", &temperature[i][j]);
        }
    }
    printf("\nDisplaying values: \n\n");
    // Использование вложенных циклов для вывода значений 2D массива
    for (int i = 0; i < CITY; ++i) {
        for (int j = 0; j < WEEK; ++j) {
            printf("City %d, Day %d = %d\n", i + 1, j + 1, temperature[i][j]);
        }
    }
    return 0;
}

Вывод

City 1, Day 1: 33
City 1, Day 2: 34
City 1, Day 3: 35
City 1, Day 4: 33
City 1, Day 5: 32
City 1, Day 6: 31
City 1, Day 7: 30
City 2, Day 1: 23
City 2, Day 2: 22
City 2, Day 3: 21
City 2, Day 4: 24
City 2, Day 5: 22
City 2, Day 6: 25
City 2, Day 7: 26
Displaying values:
City 1, Day 1 = 33
City 1, Day 2 = 34
City 1, Day 3 = 35
City 1, Day 4 = 33
City 1, Day 5 = 32
City 1, Day 6 = 31
City 1, Day 7 = 30
City 2, Day 1 = 23
City 2, Day 2 = 22
City 2, Day 3 = 21
City 2, Day 4 = 24
City 2, Day 5 = 22
City 2, Day 6 = 25
City 2, Day 7 = 26

Пример 2: Сумма двух матриц

// C программа для нахождения суммы двух матриц порядка 2*2
#include <stdio.h>
int main() {
    float a[2][2], b[2][2], result[2][2];
    // Ввод элементов с вложенными циклами
    printf("Enter elements of 1st matrix\n");
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 2; ++j) {
            printf("Enter a%d%d: ", i + 1, j + 1);
            scanf("%f", &a[i][j]);
        }
    // Ввод элементов второй матрицы
    printf("Enter elements of 2nd matrix\n");
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 2; ++j) {
            printf("Enter b%d%d: ", i + 1, j + 1);
            scanf("%f", &b[i][j]);
        }
    // Сложение соответствующих элементов
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 2; ++j) {
            result[i][j] = a[i][j] + b[i][j];
        }
    // Вывод суммы
    printf("\nSum Of Matrix:");
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 2; ++j) {
            printf("%.1f\t", result[i][j]);
            if (j == 1) printf("\n");
        }
    return 0;
}

Вывод

Enter elements of 1st matrix
Enter a11: 2; Enter a12: 0.5; Enter a21: -1.1; Enter a22: 2;
Enter elements of 2nd matrix
Enter b11: 0.2; Enter b12: 0; Enter b21: 0.23; Enter b22: 23;
Sum Of Matrix:
2.2     0.5
-0.9    25.0

Пример 3: Трёхмерный массив

// C программа для сохранения и вывода 12 значений, введённых пользователем
#include <stdio.h>
int main() {
    int test[2][3][2];
    printf("Enter 12 values: \n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                scanf("%d", &test[i][j][k]);
            }
        }
    }
    // Вывод значений с правильными индексами
    printf("\nDisplaying values:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
            }
        }
    }
    return 0;
}

Вывод

Enter 12 values: 1 2 3 4 5 6 7 8 9 10 11 12
Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12

Язык C

  1. Массивы в C#: объявление, инициализация и операции
  2. Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
  3. Понимание взаимосвязи между массивами и указателями в C
  4. Техники копирования массивов в Java: подробное руководство
  5. Умные города: доставка осязаемых выгод через проверенные решения связности
  6. Почему городские данные важны: превращение инсайтов в городскую инновацию
  7. Строительство гуманоцентричных умных городов: стратегический блупринт
  8. 5 шагов к построению умнее, безопаснее городов
  9. Массивы в C++: объявление, инициализация и работа с указателями
  10. Динамическое выделение массивов в C++: практическое руководство с примерами кода