16章 DO WHILE文

http://www.geocities.jp/ky_webid/c/016.html

whileと殆ど同じです。

ひとつ違うのが、必ず最低でも一回はループが実行されるところですね。

そこだけ注意すればwhileと同じように扱えます。

問題1

キーボードから'q'が入力されるまで、画面に「qを入力して下さい」と表示し続けるプログラムを作って下さい。

do whileを使って実装します。

int main () {
    char c;
    
    do {
        printf("qを入力して下さい\n");
        scanf("%c",&c);
    } while(c!='q');
    return 0;
}

できました。

ただし、前と同じように改行コードも一文字と認識されているようで出力が二回ずつ起きますね。

これってどうやれば解決できるのか謎です。元のページの型も言及されてないようですし。んー。とりあえず保留で。

問題2

キーボードから整数を入力させ、その数を「2倍」「3倍」〜「10倍」した数を画面に表示させるプログラムを作って下さい。ただし、このプログラムはキーボードから負数が入力されるまでの間は何度も繰り返されるものとします。

やってみます。

int main () {
    int num,i;
    
    do {
        scanf("%d",&num);
        if ( num < 0 ) {
            break;
        }
        for (i=2;i<=10;++i) {
            printf("%d ",num * i );
        }
        printf("\n");
    } while(1);
    return 0;
}

できた。

・・・けどこれdo whileでやる意味ないような気がする。

問題3

問題2のプログラムをフローチャートで書いてみて下さい。

フローチャート!?

むぅ。紙に書くとするか。

答え合わせ

わー結構詳細に書いてあるね・・・。

反省。