・p.74「List 4-1」から
p.74 do文(再掲載)
・繰返し構造を表す文で「●を行ってから、条件をチェックし成立していたら繰返す」構文
・書式: do { 繰返し内容; … } while (継続条件);
・継続条件を示す文が非0である間、繰返しを続ける
・よって、処理後に「もう一回?」とする場合に便利
p.74 list0401.cpp
//p.74 list0401.cpp
#include <stdio.h>
int main(void) {
int retry; //再実行の入力用
do {
int no; //数値の入力用(繰返しの中でしか使わないのでここで定義)
printf("整数を入力せよ:"); scanf("%d", &no); //案内を表示しキーボードから入力
if (no % 2) { //2で割った余りが非0ならば
puts("その数は奇数です。");
} else {
puts("その数は偶数です。");
}
printf("もう一度?【Yes…0/No…9】:"); scanf("%d", &retry); //案内を表示しキーボードから入力
} while (retry == 0); //0が入力されたら繰返す(9かどうかはチェックしない)
return 0;
}
自由参加課題:アレンジ演習:p.74 list0401.cpp
・3で割った余りで「その数を3で割ると余り1」「その数を3で割ると余り2」「その数は3で割り切れる」のどれかを表示するようにしよう。 ・switch-caseを用いること
p.75 結合文内での宣言
・p.74 list0401.cppでは、利用する範囲=有効範囲に合わせて変数の宣言場所を工夫している
・変数noは繰返しの中で数値を入力し値に応じて表示したら、もう使わないので、繰返しの中で定義すると効率が良い
・また、誤って再利用してしまうことを防止できる
//p.74 list0401.cpp・悪い例
#include <stdio.h>
int main(void) {
int retry; //再実行の入力用
int no; //数値の入力用(繰返しの中でしか使わないのでここで定義)※ここはまずい
do {
printf("整数を入力せよ:"); scanf("%d", &no); //案内を表示しキーボードから入力
if (no % 2) { //2で割った余りが非0ならば
puts("その数は奇数です。");
} else {
puts("その数は偶数です。");
}
printf("もう一度?【Yes…0/No…9】:"); scanf("%d", &retry); //案内を表示しキーボードから入力
} while (no == 0); //0が入力されたら繰返す(9かどうかはチェックしない)※ミスってる!
return 0;
}