『C言語初級』第3章 - 分岐文とループ文

序文

半月近くの期末復習を経て、シャオヤン、ついに C 言語初級コラムに新しい章を追加することになりました: C 言語の分岐文とループ文~ 今日の主な学習内容に触れる前に、まず最初に行う必要があります
。文を知る 文の定義と分類!


声明

ステートメントの定義

C 言語のステートメントは命令またはコード行であり、セミコロンで終わります。

文章の分類

  • 式ステートメント
  • 関数呼び出しステートメント
  • 空のステートメント
  • 複合文
  • 制御文
    今日学習した分岐文やループ文はすべて制御文であり、C言語には次の3種類の制御文があります。
  1. 分岐ステートメント:ifステートメント、switchステートメント
  2. ループステートメント:do whileステートメント、whileステートメント、forステートメント
  3. ステートメントに目を向けます:breakステートメント、gotoステートメント、continueステートメント、returnステートメント

分岐ステートメント

分岐ステートメントは選択ステートメントを意味します。
熱心に勉強すれば、良いオファーを見つけることができます。勉強しなかったら家に帰ってサツマイモを売りなさい。
分岐ステートメントにはifステートメントとステートメントがありますswitch

if ステートメント

  1. 文法構造 1:
if (表达式)
	语句;
  1. 文法構造 2:
if (表达式)
	语句1else(表达式)
	语句2
  1. 文法構造 3;
if (表达式)
	语句1else if(表达式)
	语句2else
	语句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;
}

回答: 出力内容がありません。
ii
理由: 文法では、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. 式 1 は初期化部分で、ループ変数を初期化するために使用されます。
  2. 式2は条件判定部分で、ループの終了を判定するために使用されます(==「論理」判定、条件が関係式として判定された場合は大小を比較、条件が式として判定された場合は、次に式を比較します。最終値は false の場合は 0、true の場合は非ゼロと比較されます)
  3. 式 3 は調整部分であり、ループの横断を制御するために使用されます。

for ループは実際には while ループとは少し異なります。これら 2 つのステートメントの類似点を比較してみましょう。

  1. while ループのループ変数は {} の外側で定義されており、for ループは {} の外側または () の内側で定義できます。
  2. whileループの判定条件は()内、forループの判定条件は式2となります。
  3. 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言語の基礎知識は引き続き更新されます〜

Supongo que te gusta

Origin blog.csdn.net/hsjsiwkwm/article/details/131309499
Recomendado
Clasificación