多次元配列
CoddyのCジャーニー「基礎」セクションの一部。レッスン 56/63。
多次元配列とは、配列の配列です。Cでは、2次元配列(最も一般的な多次元配列)を作成できます。これは基本的に、行と列を持つ表です。
2次元配列を宣言します:
int matrix[3][4];これは3行4列の2次元配列を作成します。
2次元配列は、宣言時に初期化できます。
int matrix[3][4] = {
{1, 2, 3, 4}, // 1行目
{5, 6, 7, 8}, // 2行目
{9, 10, 11, 12} // 3行目
};2D配列の要素にアクセスするには、2つのインデックスを使用します。
int value = matrix[1][2]; // 行1、列2にアクセスします(値は7になります)2D配列の要素を変更するには:
matrix[0][3] = 100; // 行0、列3の要素を100に変更しますネストしたループを使用して、2D配列のすべての要素にアクセスすることもできます。
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n"); // 各行の後に改行
}チャレンジ
簡単printDiagonalという名前の関数を作成してください。この関数は2D正方配列(行数と列数が等しい配列)を受け取り、main diagonal(左上から右下)上の要素を出力します。
この関数は次の処理を行う必要があります。
- 整数配列とそのサイズをパラメーターとして受け取る。
- main diagonal上の各要素(row indexとcolumn indexが等しい要素)を出力する。
- 各要素をスペースで区切る。
たとえば、次の配列が与えられた場合:
1 2 3 4 5 6 7 8 9
この関数は次のように出力します:1 5 9
自分で試してみよう
#include <stdio.h>
// 正方行列の対角要素を出力する関数
void printDiagonal(int matrix[][100], int size) {
// ここにコードを書いてください
}
int main() {
int size;
scanf("%d", &size);
int matrix[100][100];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
scanf("%d", &matrix[i][j]);
}
}
printDiagonal(matrix, size);
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ