プログラミングC: 投稿 7 – WHILEループ, の…trong Cしばらく

以前の記事で, 我々は数回繰り返しユーティリティを使用してループで知り合いになりました. 私たちが学ぶことを続けるこの記事 2 ループの他の種類のループを使用して同様の機能を持っているが、少し異なるループがあります 同時にの…同時に.

あなたは私たちがサインインする必要があるウェブサイトを認識しています? FacebookやGoogleのシンプルとして. 間違ったユーザー名やパスワードを記述する場合、あなたがより多くを入力する回数にもかかわらず、署名することができません. すべての間違った彼らが再び私たちをキャッチであります. もちろん、私たちはしばしばいくつかの特定の時間からのループ繰り返しを参照の予選で 1 nに,… しかしログは、唯一の新しいが真であることを何回新しい結末を知りません. それはどのようにwhileループであるので、…同時に.

1. WHILEループ

ループ構造ながら、

WHILEループ

構造, フローチャート、そしてそれがどのように動作するかwhileループ

例 1:

それは負の数を入力し停止するまで、任意の数のプログラムを書きます.

#include <stdio.h>

int main()
{
    int x = 1; // make x >= 0 is true -> while will run

    while (x >= 0)
    {
        printf("Nhap vao mot so : ");
        scanf("%d", &x);
    }

    printf("Ok, Program is finish!\n");

    return 0;
}

注意: あなたの上にただ単に変数xに値を代入される宣言 1 内部コマンドを実行するために、その元のwhileループの条件付きの権利を確保するため, その後、各エントリは、その後、それが受け取ったxを何入ります. 起動するように設定されていない場合 1 それはxは受信しますことができます 1 ランダムな値とループ音が失敗することができます.

結果:

一部を入力します。 : 4
一部を入力します。 : 5
一部を入力します。 : 2
一部を入力します。 : 0
一部を入力します。 : 1
一部を入力します。 : -3
OK, プログラムが終了です!

例 2:

数字を印刷 9 ペインティング 0 下行. 番号が上に配置されています 1 現在.

通常は、ループを思うだろう. [OK]を標準. しかし、ここで私はあなたがよくやっしばらくの使い方を知りたいです.

#include <stdio.h>

int main()
{
    int n = 10;

    while (n--)
    {
        printf("%d ", n);
    }

    printf("\n");

    return 0;
}

シンプル. しかし、上記のコードでは、whileループ内の条件のビットをどのようにされていることに注意?

それは他のnです 0 か否か. 書くとき while (n--) すなわち、他のnをチェックします 0 あるいはまたは右Nとして理解することができません (右です 0) 印刷ジョブ番号n. まだ動作 n-- その後、ちょうどn個を引きます 1 単独のユニット. そして、その結果で重要な注意点:

9 8 7 6 5 4 3 2 1 0

何故 0 まだ印刷にある間、分析中、場合N = 0 つまり、条件が偽であります, 間違って、彼らはむしろ、エスケープする必要があります? それは表現によるものです n-- 私達の. ときのn = 1 その後 n-- 意志のn値 0. しかし、背中を除い式でnはそれは検査命令の後になるn = 0. すなわち場合はn = 1 表現 while(n--) まだ正しいし、新しいn個をドロップ 0 ジョブを実行します, その時に印刷された数字を印刷します 0.

2. ループ…同時に

ループ構造…同時に

ループ...しばらく

構造, フローチャート、それがループをどのように動作しますか…同時に

例 1

自分のFacebookのパスワードの前に保存します. ログインするためのパスワードを入力するようにプログラムを書きます.

#include <stdio.h>
#include <string.h> // for strcmp function

int main()
{
    char p[20] = "Iloveyou";      // pass saved
    char pass[20];              // pass must enter

    do 
    {
        printf("Enter your password: ");
        gets(pass);
    } while ( strcmp(p, pass) != 0);

    printf("Ok. You are login success!\n");

    return 0;
}

結果:

パスワードを入力してください: オフィス
パスワードを入力してください: nguyenvanquan
パスワードを入力してください: ILOVEYOU
パスワードを入力してください: ILOVEYOU
OK. あなたは成功をログインしています!

注意: 上記のコードで, 私は、関数を使用しています 比較することのstrcmp 2 チェーン, この関数は、ライブラリ内に位置しています string.hの

関数strcmpは、文字列と文字列のPパスを比較した結果を与えます:

  • 1 pはパスよりも大きい場合
  • 0 もしP同じパス
  • -1 pはパス未満の場合

だから我々は条件を持っています strcmp(p, pass) != 0 すなわち 2 このシーケンスは同一ではありません.

詳細な比較 2 チェーン, すべてであなたの参照 比較します 2 Cの文字列 – strcmpの

3. 比較します, ループを使用して, 同時に, の…同時に

  • ループは、一般的に決定された反復回数を知るために使用されます.
  • 通常、whileループ, の…反復の未知数を使用しながら、
  • whileループを呼び出すとき, の…同時に, 条件が偽の場合, ループは一度実行されませんが、しかしループ…実現しばらく 1 時間.

エクササイズ

  1. 繰り返し文字の作業を入力するプログラムを作成し、その文字のASCIIコードを印刷, とき入力するには 0 その後、停止. ( 参照する ASCIIエンコーディング )
  2. 文字を出力するプログラムを作成: “あなたは私を愛していないでください?”, そして、ユーザーは、cを入力します (持っている) またはK (しない). Cを入力すると、プログラムを停止, 彼ら自身が再投入Kの入力を始めた場合でも^^. (ガールフレンド/ボーイフレンドを送信)
  3. 入力する 1 数, 素因数のどの成果の分析.
  4. USCLNを見つけるためのプログラムを書きます, のBSCNN 2 数.