序文
半月近くの期末復習を経て、シャオヤン、ついに C 言語初級コラムに新しい章を追加することになりました: C 言語の分岐文とループ文~ 今日の主な学習内容に触れる前に、まず最初に行う必要があります
。文を知る 文の定義と分類!
声明
ステートメントの定義
C 言語のステートメントは命令またはコード行であり、セミコロンで終わります。
文章の分類
- 式ステートメント
- 関数呼び出しステートメント
- 空のステートメント
- 複合文
- 制御文
今日学習した分岐文やループ文はすべて制御文であり、C言語には次の3種類の制御文があります。
- 分岐ステートメント:
if
ステートメント、switch
ステートメント - ループステートメント:
do while
ステートメント、while
ステートメント、for
ステートメント - ステートメントに目を向けます:
break
ステートメント、goto
ステートメント、continue
ステートメント、return
ステートメント
分岐ステートメント
分岐ステートメントは選択ステートメントを意味します。
熱心に勉強すれば、良いオファーを見つけることができます。勉強しなかったら家に帰ってサツマイモを売りなさい。
分岐ステートメントにはif
ステートメントとステートメントがありますswitch
。
if ステートメント
- 文法構造 1:
if (表达式)
语句;
- 文法構造 2:
if (表达式)
语句1;
else(表达式)
语句2;
- 文法構造 3;
if (表达式)
语句1;
else if(表达式)
语句2;
else
语句3;
C 言語では、0 は false、ゼロ以外は false です。if の後の括弧内の式が true の場合はステートメントが実行され、そうでない場合は false となり、ステートメントは実行されません。
使用例
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年\n");
}
else if (age < 18 && age>12)
{
printf("青少年\n");
}
else
{
printf("小朋友\n");
}
return 0;
}
他にぶら下がっている
if、else、else if の後には 1 つのステートメントのみを続けることができます。複数のステートメントの後に続ける場合は、中括弧 { } (コード ブロック) を使用して複数のステートメントを含める (複合ステートメントを形成する) 必要があります。複数のステートメントを記述するときに {} を使用しないと、ぶら下がり esle が表示されます。
例:
質問: 次のコードを実行すると結果はどうなりますか?
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("lala\n");
else
printf("hehe\n");
return 0;
}
回答: 出力内容がありません。
理由: 文法では、else が最も近い if に一致し、最初の if 条件が false の場合、次のステートメントは実行されません。
为了避免这类bug的出现,我们应该多使用{},莫要偷懒。
switch ステートメント
switch ステートメントは分岐ステートメントでもあり、複数分岐の状況でよく使用されます。
文法構造
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
defaule:
printf("该天不存在\n");
}
return 0;
}
構成するもの:
switch
: スイッチの後ろの()内の内容は整数式ですcase
: 式の値がこの可能な値である場合、次のステートメントを実行します。break
: シチュエーションの実行を終了し、実行を続行したくない場合は、ブレークを使用してスイッチから抜け出す必要があります。default
: 上記のいずれのケースも可能な値に一致しない場合は、デフォルト ステートメントを実行します。switch ステートメントにはデフォルト ステートメントが 1 つだけあります。
柔軟な使用
#include <stdio.h>
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
複数の case 文で同じ内容を実行する場合は、同じ内容の case 文を複数省略して、同じ内容を実行する最後の case 文に実行内容を追加してブレークするだけで済みます。
ループ文
ループ ステートメントの定義は、1 つのことを繰り返し実行することです。これは、言語での繰り返し実行です。
while ループ
文法構造
while(表达式)
{
语句;
}
このコードは、ループに入る条件が true であり、ループに入るということを意味します。式が true の場合、ステートメントは実行され、式が false の場合、ステートメントは実行されません。
使用例
0 から 9 までの数字を出力します
#include<stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
printf("%d ", i);
i++;
}
return 0;
}
whileループを実行します
文法構造
do
语句;
while(表达式);
do while
ループはループと非常によく似ていますwhile
が、次のような違いがあります。
while
ステートメントは最初に式を判断し、次にループ ステートメントを実行します。do while
このステートメントは、最初にループ ステートメントを実行し、次に式を評価します。
使用例
問題: 0 ~ 9 の数字を画面に表示します。
#include<stdio.h>
int main()
{
int i = 0;
do
{
printf("%d ", i);
i = i + 1;
} while (i < 10);
return 0;
}
for ループ
文法構造
for(表达式1; 表达式2; 表达式3)
{
...//循环语句;
}
ループに必要な 3 つの条件:
- 式 1 は初期化部分で、ループ変数を初期化するために使用されます。
- 式2は条件判定部分で、ループの終了を判定するために使用されます(==「論理」判定、条件が関係式として判定された場合は大小を比較、条件が式として判定された場合は、次に式を比較します。最終値は false の場合は 0、true の場合は非ゼロと比較されます)
- 式 3 は調整部分であり、ループの横断を制御するために使用されます。
for ループは実際には while ループとは少し異なります。これら 2 つのステートメントの類似点を比較してみましょう。
- while ループのループ変数は {} の外側で定義されており、for ループは {} の外側または () の内側で定義できます。
- whileループの判定条件は()内、forループの判定条件は式2となります。
- while ループは {} のループ変数を制御し、for ループは式 3 にあります。
使用例
0 ~ 9 の数字を出力する
#include <stdio.h>
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
printf("%d ", i);
}
return 0;
}
休憩と継続
壊す
break
機能: ループを永久に終了します。ループ内でブレークが発生する限り、ループが終了するまで後続のすべてのループが停止します。
使用例
0 ~ 9 の数字を出力し、break ステートメントを追加して、その効果を観察します。
#include<stdio.h>
int main()
{
int i = 0;
while (i<10)
{
if (i == 5)
{
break;
}
printf("%d ", i);
i = i + 1;
}
return 0;
}
続く
continue
機能: このサイクルを終了します (Continue がある現在のサイクルをスキップします)。つまり、このサイクルの continue 以降のコード部分は実行されず、直接判定部分にジャンプして判定し、次のサイクルのエントリに入ります。体。
使用例
5 ではなく 0 ~ 9 の数字を出力します
#include<stdio.h>
int main()
{
int i = 0;
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
goto ステートメント
C 言語には、自由に使用できる goto ステートメントと、ジャンプをマークするラベルが用意されています。
機能: これは、深いループの入れ子からジャンプする (ループの 1 つ以上の層からジャンプする) ために使用できます深层循环
が、break はジャンプすることしかできません一层循环
。
使用例
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)
goto
上記のように、プログラム内でネストされたレイヤーの数に関係なく、ステートメントが見つかった限り、goto
マークされたステートメントのラベルにジャンプします~
さて、今日Xiaoyangが共有した知識ポイントはこれで終わりです。C言語の基礎知識は引き続き更新されます〜