バイオインフォ道場、くまぞうです。
while文は、条件を満たす間ずっとコードブロックを繰り返す場合に使います。例えば、「ファイルの末尾までチェックする」とか、「ある条件を満たすまで」というような回数不定の条件などで用いると便利です。
スポンサーリンク
while文による繰り返し制御
case文の書き方
while文を繰り返すための条件式を書きます。条件が条件を満たす間ずっと繰り返しを行います。条件を満たしたか?の判断に、「繰り返し処理を脱出するbreak」や「途中で折り返すcontinue」などの制御文と一緒に用いられることが多いです。
while文の一般的な形式
while (条件式) {
対応した文;
...
}
プログラム
test_while.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
void main(int argc, char* argv[])
{
srand(time(NULL));
int sec = rand()%26;
if (argc>1 && argv[1][0] == 'D') {
printf("%c %2d\n", sec+'A', sec);
}
printf("PLEASE INPUT KEY(A-Z). Quit:Control+C\n");
int count = 0;
char line[80];
char key;
while (count<10) {
fgets(line, sizeof(line), stdin);
sscanf(line, "%c", &key);
count++;
if (sec == (key-'A')) {
break;
}
else {
(sec<(key-'A'))? printf("A..%c", key) : printf("%c..Z", key);
printf("\n");
}
}
printf("%s\n", count<10 ? "you win" : "C win");
}
プログラム実行
test_while
$ gcc test_while.c -o test_while $ ./test_while PLEASE INPUT KEY(A-Z). Quit:Control+C A A..Z H H..Z O O..Z Q Q..Z V A..V T T..Z you win
プログラムについて
test_while.cでは、入力されたキーをチェックするために「while」を使いました。fgetsとsscanfを使って、キーボードから入力された1文字を判断します。10回以内の入力でランダムに選ばれた文字と一致したら、「あなたの勝ち」です。10回以内に当てれなかったら、「C」の勝ちです。whileの条件は入力回数のcount<10で、1回入力する度にcount+1されます。key==sec(key-'A')でキーが一致したらbreakでwhileの繰り返しを抜けます。 秘密のキーは、「rand()%26」で実行毎に1つ選びます。ヒントを表示していますが、最も近かった情報を記録して表示すると、もっと楽しめると思います。
スポンサーリンク
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

