p.122 配列の要素に値を読み込む
・配列名は識別子なので、変数と同じネーミングルールになる
・配列の要素は変数と同じ扱いができる
・よって、配列aの先頭要素にキーボードから値を読み込むには scanf("%d", &a[0]); とする。
p.122 配列の全要素の並びを反転する
・変数aと変数bの値を交換する場合は、同じ型の作業用の変数に退避させてから代入する 例: int tmp = a; a = b; b = tmp; ・このことを配列の要素値の交換に応用すると、配列の全要素の並びを反転することができる ・ただし、交換処理を全要素について繰返すと、元に戻ってしまうので、真ん中の要素までとすること
アレンジ演習:p.123 list0508.c
・配列の要素数7を変数numに保持しておこう(int num = 7;) ・2つのforにおける「7」「3」「6」をnumから得るようにしよう ・すると、配列の要素数を変更しても最低限の変更で対応できるようになる ※ 配列の宣言における要素数には変数は使えない(オブジェクト形式マクロ(p.124)で対処可能)
作成例
//アレンジ演習:p.121 list0508.cpp
#include <stdio.h>
int main(void)
{
int num = 7; //要素数
int x[7]; //配列の宣言(※ x[num]とはできない)
for (int i = 0; i < num; i++) { //配列aの添字の範囲(0~num未満)で繰返す
printf("x[%d]:", i); //添字を表示
scanf("%d", &x[i]); //要素x[i]に読み込む
}
for (int i = 0; i < num / 2; i++) { //配列aの添字の範囲の前半について繰返す
int t = x[i]; //要素x[i]の値を退避
x[i] = x[num - 1 - i]; //要素x[i]の反対側の要素の値を代入
x[num - 1 - i] = t; //反対側の要素に退避してあった値を代入
}
puts("反転しました。");
for (int i = 0; i < num; i++) { //配列aの添字の範囲(0~num未満)で繰返す
printf("x[%d] = %d\n", i, x[i]); //添字と値を表示
}
return 0;
}
提出:アレンジ演習:p.123 list0508.c・改
・要素数を6にしてみよう ・numの初期値と、配列の要素数の両方を6にして動作を確認すること ・次回、学習するオブジェクト形式マクロ(p.124)で改良するのでお楽しみに。