身につくC言語-6回目 条件分岐 if文-

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」の使い方をしっかりと身につけましょう。