演習課題「ループで 2 次元配列に要素を追加しよう」
右のコードエリアでは、4 × 4 の配列が宣言されています。
この配列に、要素として 1 から 16 の値を順番に追加してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
演習課題「for で 2 次元配列を出力しよう」
右のコードには、2 次元配列が定義されています。この配列を for を使って スペース区切りで出力してください。
ただし、各行の先頭にスペースを入れないようにしてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
10 11 12 13
14 15 16 17
18 19 20 21
#04:2次元配列をループで処理しよう
2 次元配列をループを使って処理する方法について学習します。
#include <stdio.h>
int main(void)
{
int data[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
data[i][j] = i * 3 + j + 1;
}
}
}
j のループの長さが 3 なので、「i * 3 + j + 1」とすると 1 から 9 までの値を追加できます。
このチャプターで作成したコードです。// 2 次元配列をループで処理しよう
#include <stdio.h>
int main(void)
{
int data[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
data[i][j] = i * 3 + j + 1;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if(j != 0) {
printf(" ");
}
printf("%d", data[i][j]);
}
printf("\n");
}
}
次のようにすると、define マクロで定義した、大きさ H × W の 2 次元配列を 1 から N × M の値で初期化して、出力できます。#include <stdio.h>
#define H 10
#define W 20
int main(void)
{
int data[H][W];
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
data[i][j] = i * W + j + 1;
}
}
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
if (j != 0) {
printf(" ");
}
printf("%3d", data[i][j]);
}
printf("\n");
}
}
※printf の変換指定子に %3d を使うと、値を 3 桁でそろえて出力できます。
- 2 次元配列 - 初心者のためのポイント学習 C 言語
http://www9.plala.or.jp/sgwr-t/c/sec09.html
- 多次元配列 - 超初心者向けプログラミング入門
https://programming.pc-note.net/c/hairetsu2.html
- C言語のマクロの基本について - C 言語
http://www.c-lang.org/detail/macro_basic.html