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;
}