プログラミング言語Ⅰ・講義メモ8

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)で改良するのでお楽しみに。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です