この章では、C の「条件分岐」と「繰り返し処理」を説明します。
#include <stdio.h>
int main()
{
printf("10==10 is %d.\n", 10==10);
printf("10==20 is %d.\n", 10==20);
int num = -1;
if (num) // 0 以外の整数値はすべて true です
{
printf("%6d is true.\n", num);
} else {
printf("%6d is false.\n", num);
}
num = 0;
if (num)
{
printf("%6d is true.\n", num);
} else {
printf("%6d is false.\n", num);
}
return 0;
}
10==10 is 1.
10==20 is 0.
-1 is true.
0 is false.
なお、stdbool.h というヘッダーを読み込むと true false という表現が使えるようになります。
#include
#include
int main()
{
if (true)
{
printf("True\n");
} else {
printf("False\n");
}
if (false)
{
printf("True\n");
} else {
printf("False\n");
}
printf("true is %d.\n", true);
printf("false is %d.\n", false);
return 0;
}
True
False
true is 1.
false is 0.
しかし、これも次のように 1 と 0 を define で書き換えているだけみたいです。
#define false 0
#define true 1
if else 使うと、3つ以上の選択肢を設定することができます。
#include <stdio.h>
void yourscore();
int main()
{
yourscore(70);
yourscore(90);
yourscore(50);
yourscore(30);
return 0;
}
void yourscore(int score)
{
if ( score >= 80 )
{
printf("成績はAです。\n");
} else if ( score >= 60 ) {
printf("成績はBです。\n");
} else if ( score >= 40 ) {
printf("成績はCです。\n");
} else {
printf("また頑張りましょう。\n");
}
}
成績はBです。
成績はAです。
成績はCです。
また頑張りましょう。
条件分岐の方向が多くある場合には、switch 文を使うのも便利です。
#include <stdio.h>
void character(char code);
int main()
{
character('C');
character('A');
character('B');
character('D');
character(65);
return 0;
}
void character(char code)
{
switch (code)
{
case 'A':
printf("%c\n", code);
break;
case 'B':
printf("%c\n", code);
break;
case 'C':
printf("%c\n", code);
break;
default:
printf("not matching.\n");
}
}
C
A
B
not matching.
A
#include <stdio.h>
int main()
{
int num = 1;
while (num < 11)
{
printf("%d回目\n", num);
num++;
}
printf("End...\n");
return 0;
}
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目
End...
while 文は break キーワードで終了させることもできます。
#include <stdio.h>
int main()
{
int num = 1;
while (num)
{
printf("%d回目\n", num);
num++;
if (num > 10) { break; }
}
printf("End...\n");
return 0;
}
実行結果は先ほどと同じです。
continue というキーワードを使うと、繰り返し処理を その回の処理だけスキップできます。
#include <stdio.h>
int main()
{
int num = 0;
while (num < 11)
{
num++;
if (num % 2 != 0 ) { continue; }
printf("%d回目\n", num);
}
printf("End...\n");
return 0;
}
2回目
4回目
6回目
8回目
10回目
End...
do-while 文を使うと、条件に合致するかどうかに関わらず 最低一回は処理が実行される繰り返し文が書けます。
#include <stdio.h>
int main()
{
int num = 0;
do {
printf("%d回目\n", num);
num++;
if (num > 10) { break; }
} while (num);
printf("End..\n");
return 0;
}
0回目
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目
End..
繰り返す回数があらかじめ決まっている場合などは、while 文よりも、for 文の方がよく使われます。
#include <stdio.h>
int main()
{
for (int i=1; i <= 10; i++)
{
printf("%d回目\n", i);
}
printf("End..\n");
return 0;
}
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目
End..