C言語講座 制御(選択)

C言語講座
制御(選択)
2006年
計算技術研究会
まずは、復習問題。



aという変数に10進数を入力して、その数
を8進数と、16進数で出力しなさい。
8進数の入出力を宣言したければ、%oを
使用しなさい。
16進数の入出力を表示したければ、%xを
しようしなさい。
解答例
#include<stdio.h>
Int main(void){
int a;
printf(“Input a number:\n”);
scanf(“%d”,&a);
printf(“入力した数を8進数で表示すると%oで
す。\n”,a);
printf(“入力した数を16進数で表示すると%xです。
\n”,a);
}
できました?
前回とまったく同じ問題を使いましたが、
覚えていましたか?
前回は、入出力や四則演算について、
主に紹介しました。今回は、これらを使って、
「制御(選択)」という次のステップに入ります。
選択(1)
条件
If … else文
構文
処理A
処理B
if(条件)
{
処理A(←条件を満たしたときの処理);
}
else
{
処理B(←条件を満たさなかったときの処理);
}
例題

数字を2つ入力して、1番目に入力した数
字と2番目に入力した数字の大小関係を
表示するプログラムを作ってみよう。



プロジェクト名:
comp
ファイル名:
comp.c
%dで入力し、if文で判定しよう
ヒント
1.START
2.整数型変数 a,b
3.”Input 1st number:”
4.aに数値を入力
5.”Input 2nd number:”
6.bに数値を入力
7.a==b?
もし、a==bならば・・・
8.”1st=2nd”
そうでなかったら・・・
9.a>b?
もし、a>bなら、
10.”1st>2nd”
そうでないなら、
11.”1st<2nd”
12.END
条件に使われる演算子

比較演算子と論理演算子



If (x>= 1 && x<= 10)
x
x>= 1
x<=10
x>=1 && x<=10
1より小
0
1
0(偽)
1~10
1
1
1(真)
10より大
1
0
0(偽)
If(x <= 1 || x >= 10)
x
x<= 1
x>=10
x<= 1 || x>= 10
1以下
1
0
1(真)
1~10
0
0
0(偽)
10以上
0
1
1(真)
0が偽で、それ以外は真と判定される。
選択(2)

条件
switch …case 文

処理A
構文
switch(変数)
{
case
定数1:
処理A;
定数1を満たした場合
break;
case
定数2:
処理B;
定数2を満たした場合
break;
default:
処理C;
}
その他の場合
処理B
こ
れ
を
忘
れ
ず
に
!!
処理C
練習問題

アルファベットを1文字入力して、そのアル
ファベットが1文字目にくるような英語の単
語を表示するプログラムを作ろう。




プロジェクト名
:06word
ファイル名
:06word.c
%cで入力し、switch文で判定しよう
アルファベットは最低a,b,cを利用して作ろう
解答例
#include<stdio.h>
int main(void)
{
char c;
printf(“Input a character:\n”);
scanf(“%c”,&c);
switch(c)
{
case ’a’:
printf(“apple\n”);
break;
case
‘b’:
printf(“bear\n”);
break;
case ‘c’:
printf(“car\n”);
break;
default:
printf(“else\n”);
}
Return
0
}
課題











西暦の年号を入力して、閏年かを判定するプログラムを作成しましょ
う。
入力は正の整数
入力ミスの場合(0か負の整数)は、
「正の整数を入力しましょう。」と表示する
閏年の場合は、「閏年です。」と表示する
閏年でない場合は、「閏年ではないです。」と表示する
閏年は、年号が4で割り切れる年。(2004年)
ただし、100で割り切れる年は閏年ではない。(1900年)
しかし、400で割り切れる年は閏年となる。(2000年)
条件をうまく考えよう(「かつ」と「または」で言い換えよう)。プログラ
ムは、例題を参考にしよう。
プロジェクト名:06leapファイル名:06leap.c
ヒント
解答例
#include<stdio.h>
int main(void){
int
a;
printf(“Input year:\n”);
scanf(“%d”,&a);
if(a<=0)
{
printf(“正の値を入力しましょう\n”);
}
else if(a%4==0 && (a%100!=0 || a%400==0))
{
printf(“閏年です。 \n”);
}
else
{
printf(“閏年ではありません。\n”);
}
return
0;
}