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

p.126 代入式の評価

・2項=演算子(代入演算子)は他の多くの演算子とは異なり右から左に評価される
・また、評価値は代入値になる
・このことを活かして、多変数への同時代入ができる。
例: a = b = c = 5; //「c = 5」の評価の5をbに代入し「b = 5」の評価の5をaに代入
 ※実質的には a = (b = (c = 5)) と実行される
・この仕掛けは初期化には使えないので注意(例:int a = b = 0; //エラーになる)

アレンジ演習:p.126 list0511.cpp

・学生の人数を4人にしよう(マクロ以外は書き換えないこと)

作成例

//アレンジ演習:p.121 list0511.cpp
#include <stdio.h>
#define NUMBER 4 //学生の人数
int main(void)
{
    int tensu[NUMBER]; //配列の宣言(要素数はマクロで得る)
    int max, min; //最大値、最小値
    printf("%d人の点数を入力せよ。\n", NUMBER); //表示する値をマクロで得る
    for (int i = 0; i < NUMBER; i++) { //繰返しの回数をマクロで得る
        printf("%2d番:", i + 1); //添字+1を表示
        scanf("%d", &tensu[i]); //要素tensu[i]に読み込む
    }
    min = max = tensu[0]; //仮に先頭の値が最小値&最大値だとする
    for (int i = 1; i < NUMBER; i++) { //先頭の次の要素以降について繰返す
        if (tensu[i] > max) max = tensu[i]; //最大値超なら最大値更新
        if (tensu[i] < min) min = tensu[i]; //最小値未満超なら最小値更新
    }
    printf("最高点:%d\n", max);
    printf("最低点:%d\n", min);
    return 0;
}

自由参加課題:アレンジ演習:p.126 list0511.cpp

・最高点、最低点が何番目のデータかも表示しよう
・同点の場合は全て表示すること
例:
4人の点数を入力せよ。
 1番:100
 2番:50
 3番:100
 4番:50
最高点:100 1番 3番
最低点:50 2番 4番

p.127 演習5-4

・提出フォロー:アレンジ演習:p.123 list0508.c・改 を用いると良い

作成例

//p.127 演習5-4
#include <stdio.h>
#define NUMBER 7 //要素数
int main(void)
{
    int x[NUMBER]; //配列の宣言(※ x[num]とはできない)
    for (int i = 0; i < NUMBER; i++) { //配列aの添字の範囲で繰返す
        printf("x[%d]:", i); //添字を表示
        scanf("%d", &x[i]); //要素x[i]に読み込む
    }
    for (int i = 0; i < NUMBER / 2; i++) { //配列aの添字の範囲の前半について繰返す
        int t = x[i]; //要素x[i]の値を退避
        x[i] = x[NUMBER - 1 - i]; //要素x[i]の反対側の要素の値を代入
        x[NUMBER - 1 - i] = t; //反対側の要素に退避してあった値を代入
    }
    puts("反転しました。");
    for (int i = 0; i < NUMBER; i++) { //配列aの添字の範囲で繰返す
        printf("x[%d] = %d\n", i, x[i]); //添字と値を表示
    }
    return 0;
}

p.127 演習5-5

・どうなるかを想定してから、それを試すプログラムを作成しよう

作成例

//p.127 演習5-5
#include <stdio.h>
int main(void)
{
    double a;
    int b;
    a = b = 1.5; //「b = 1.5」の評価である1をaに代入する
    printf("a = %f、b = %d\n", a, b); //「a = 1.000000、b = 1」
    return 0;
}

コメントを残す

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