C言語の基本要素として、条件分岐というものがあります。
たとえば、朝は「おはよう」昼は「こんにちは」夜は「こんばんは」というように、朝昼夜によって適切な返答が必要になります。
そこで、仕様するのは、「if()」というモノです。
これには、「;」の終わりマークは必要ありません。
if文の使い方
まずは、これを入力してください。
#include<stdio.h>
int main(void)
{
int a;
printf("1を入力してください。\n");
scanf("%d",&a);
if(a==1)
{
printf("1が入力されました。\n");
}
else
{
printf("1以外が入力されました。\n");
}
return 0;
}
ここで大切なのは、
if(a==1)
{
printf("1が入力されました。\n");
}
else
{
printf("1以外が入力されました。\n");
}
というところです。
ここを日本語に直すと、
もし、aが1と等しいなら「1が入力されました。」と出力しなさい。それ以外なら「1以外が入力されました。」と出力しなさい。
という意味です。
C言語で「=」というのは、「代入」意味します。
「==」というのは、「左辺と右辺が等しい」ということを意味します。
ですので、未定の変数「a」を使い「a==1」や、未定の変数どうし「a」「b」を使い「a==b」と表現することはできます。
しかし、定数どうしを「1==3」などと表現することはできません。
これは当たり前ですよね。
そのほかにもよく使う演算子をまとめてみます。
よく使う演算子
== | 左辺と右辺が等しい |
---|---|
!= | 左辺と右辺が等しくない |
> | 左辺が右辺より大きい |
>= | 左辺が右辺以上 |
< | 左辺が右辺未満 |
<= | 左辺が右辺以下 |
もう一つやって見ましょう。
ソースコード
#include<stdio.h>
int main(void)
{
int a;
printf("今が朝なら1を、昼なら2を、夜なら3を入力してください。\n");
scanf("%d",&a);
if(a==1)
{
printf("おはよう\n");
}
else if(a==2)
{
printf("こんにちは\n");
}
else if(a==3)
{
printf("こんばんは\n");
}
else
{
printf("1~3を入力してください。\n");
}
return 0;
}
新しく追加されたのは、「else if」です。
これは、「前の条件以外でもしこの条件に当てはまるならば」という意味です。
難しいので、これ全体を日本語にしてみましょう。
aが1ならば「おはよう」を出力しなさい。aが1ではなくaが2なら「こんにちは」を出力しなさい。aが1と2でなく、aが3なら「こんばんは」を出力しなさい。
それ以外なら「1~3を入力してください」を出力しなさい。
という意味です。
やはり文字にしてしまうと、難しく感じてしまいますね。
こればかりは、感覚として覚えた方がいいのかもしれません。
練習問題
問題1 整数を入力して、その数が100以上ならば、「100以上です。」と出力しなさい。それ以外ならば、「100未満です。」と出力しなさい。
問題2 1文字を入力して、その数が’a’ならば、「エイ」と出力しなさい。それ以外なら、「エイではありません。」と出力しなさい。
練習問題 解答と解説
問題1
#include<stdio.h>
int main(void)
{
int a;
printf("整数を入力してください。\n");
scanf("%d",&a);
if(a>=100)
{
printf("100以上です。\n");
}
else
{
printf("100未満です。\n");
}
return 0;
}
以上や未満を表現したいときは、「>=」などを使用します。
問題2
#include<stdio.h>
int main(void)
{
char a;
printf("1文字を入力してください。\n");
scanf("%c",&a);
if(a=='a')
{
printf("エイ\n");
}
else
{
printf("エイではありません。\n");
}
return 0;
}
ここでつまずいてしまうのは、「(a==’a’)」というところだと思います。
文字そのものを比較するときは、「”」で囲むことが必要です。
ここは忘れやすいので、気をつけるようにしましょう。
まとめ
if文はどんなプログラムでも使う機会がでてくるとおもいます。
「if」「else if」「else」の使い方をしっかりと身につけましょう。