8.条件判断(if-else) (含む9.論理演算)
サンプル8−1
#include <stdio.h>
int main()
{
int nen1,nen2,nen3,nen4,grad;
int hantei;
printf("1年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen1);
printf("2年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen2);
printf("3年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen3);
printf("4年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen4);
printf("今何年生ですか?\n");
scanf("%d",&grad);
hantei = nen1 + nen2 + nen3 + nen4;
hantei = hantei * 3 / (grad - 1);
if(hantei < 104)
{
printf("4年次に就職活動はできそうですか?\n");
}else
{
printf("その調子でがんばりましょう\n");
}
return(0);
}
次に、条件を多少複雑にして、細かく分けていくことを試して見ましょう。
ここで行っているのは、まず、学年の入力が適正かどうかを判断します。1年生や5年生以上というのは、問題があるので、それを洗い出します。シンボル || は「または(or)」を表す論理演算子になります。
次に、取っている単位数に応じてコメントを変化させることを考えます。ここでは、範囲を考える必要があるので、例えば、3年終了時で80単位以上104単位未満の範囲で単位取得している場合、就職活動は大変そうなので「大丈夫ですか?」と聞いてあげましょう。
式で書けば、
80 <= hantei < 104
と書けばいいのですが、Cではそのように書けません。そこで、シンボル && 「かつ(and)」を使って「80 <=
hantei」と「hantei <
104」を同時に満たすものを考えてやります。以下も同じように考え、条件を設定したのが次のプログラムです。
サンプル8−2
#include <stdio.h>
int main()
{/*大変なのは分かっていますが手入力でどうぞ*/
int nen1,nen2,nen3,nen4,grad;
int hantei;
printf("1年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen1);
printf("2年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen2);
printf("3年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen3);
printf("4年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen4);
printf("今何年生ですか?\n");
scanf("%d",&grad);
hantei = nen1 + nen2 + nen3 + nen4;
hantei = hantei * 3 / (grad - 1);
if(grad <= 1 || grad >= 5)
{
printf("学年の入力が微妙です\n");
}else
if(hantei < 104 && hantei >= 80)
{
printf("4年次に就職活動はできそうですか?\n");
}
if(hantei < 80 && hantei >= 60)
{
printf("まさか、すでに留年確定ですか?\n");
}
if(hantei < 60)
{
printf("何かの冗談でしょう…\n");
}
if(hantei >= 104)
{
printf("その調子でがんばりましょう\n");
}
return(0);
}
<検算すること>
(1)1年次35単位、2年次5単位、3年次19単位、4年次ゼロ単位取っている4年生はどのように判定されるか?
答:何かの冗談でしょう…
(2)1年次34単位、2年次15単位、3年次ゼロ単位、4年次ゼロ単位取っている3年生はどのように判定されるか?
答:まさか、すでに留年確定ですか?
(3)1年次40単位、2年次40単位、3年次ゼロ、4年次ゼロ取っている5年生はどのように判定されるか?
答:学年の入力が微妙です
まさか、すでに留年確定ですか?