1.C言語の文構造
C 言語は構造化プログラミング言語です。ここでいう構造とは、逐次構造、選択構造、ループ構造のことです。C 言語はこれら 3 つの構造を実現できます。実は、よく分析してみると、私たちが日常的に目にするものはすべて分割できます。これら 3 つの構造、またはこれら 3 つの構造の組み合わせ。
if と switch を使用して分岐構造を実装し、for、while、do while を使用してループ構造を実装できます。
2.if文
2.1. if ステートメントの構文形式は次のとおりです。
if (表达式)
语句
if ステートメントは true です。式が真 (true) の場合はステートメントが実行され、式が真でない (false) 場合はステートメントは実行されません。
C 言語では、0 は false、0 以外は true を意味し、式の結果が 0 の場合はステートメントは実行されず、式の結果が 0 以外の場合はステートメントが実行されます。
次に、例を書きます。
// 输⼊⼀个整数,判断是否为奇数
int main()
{
int i = 0; // 初始化
scanf("%d", &i); // 输入值
if (i % 2 == 1) // 表达式
{
printf("是奇数!"); // 语句
}
return 0;
}
結果:
フローチャート:
2.2.else ステートメントの構文形式は次のとおりです。
if (表达式)
语句1
else
语句2
次に、例を書きます。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。
int main()
{
int i = 0; // 初始化
scanf("%d", &i); // 输入整数
if (i % 2 == 1) // 如果 i 模 2 等于 1的 就是奇数
{
printf("%d是奇数!", i);
}
else // 如果不是等于 1的,就是偶数
{
printf("%d 是偶数!", i);
}
return 0;
}
操作結果:
2.3. ブランチに複数のステートメントが含まれる
デフォルトでは、if および else では、次のような 1 つのステートメントのみがデフォルトで制御されます。
# include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 18)
printf("成年了!\n");
printf("可以谈恋爱了!\n");
return 0;
}
上記のコードでは、入力値が 18 以上であっても 18 未満であっても、「You can fall in love」と画面に表示されることがわかります。
これは、if ステートメントが制御できるのは printf("I'm an Adult\n"); という 1 つのステートメントのみであるためです。if ステートメントが true の場合は、成人向けのステートメントが出力されます。ステートメントが false の場合は、成人向けのステートメントは出力されません。 for printf("You can fall in love\n"); n"); は独立して存在し、if ステートメントの条件が true か false かに関係なく実行されます。次に、if ステートメントで 2 つのステートメントを同時に制御したいとします。
どうすればよいでしょうか? 次に、else を使用するか、その後に中括弧を続けてコードを囲む必要があります。次のように:
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
{
printf("成年了!\n");
printf("可以谈恋爱了!\n");
}
else // else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句
{
printf("未成年!\n");
printf("不可以早恋哦!\n");
}
return 0;
}
2.4. ネストされた if
if else ステートメントでは、else を別の if ステートメントと一緒に使用して、複数の判断を行うことができます。
例: 整数を入力し、入力された整数が 0、正の数、負の数のいずれであるかを判定する必要があります。
int main()
{
int i = 0;
scanf("%d", &i);
if (i == 0)
{
printf("%d是零\n", i);
}
else if (i > 0)
{
printf("%d是正数\n", i);
}
else
{
printf("%d是负数\n", i);
}
return 0;
}
2.5. ぶら下がっているelseの問題
if と else が複数ある場合、そのようなルールを覚えておくと、else は常に最も近い if に一致します。
以下のコードを見てください。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
このコードは何を出力しますか?
実際には何も出力されず、初心者がやりがちな間違いは、a が 0 で 1 に等しくないと判断し、else 句を実行して「はは」と出力してしまうことですが、実行してみると何も出力されていないことがわかります。
なぜ?
これはぶら下がり else の問題なので、if と else が複数ある場合は、このルールを覚えておいてください。else は常に最も近い if に一致します。
上記のコード レイアウトでは、else が最初の if ステートメントと一致しているため、else が最初の if ステートメントと一致すると考えられます。if ステートメントが true でない場合、自然に考えられるのは、else 節を実行して「笑」と出力することです。上記の else は 2 番目の if と一致するため、次の if...else ステートメントは最初の if ステートメントにネストされます。最初の if ステートメントが成立しない場合、if と ese がネストされる可能性はありません。実行時, 結局何も出力されません。
それでは、次のように改善してみましょう。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
else を最初の if に一致させたい場合は、次のようにこれをこれに変更できます。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}