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年次の単位取得数は何単位ですか?
2年次の単位取得数は何単位ですか?
3年次の単位取得数は何単位ですか?
4年次の単位取得数は何単位ですか?
今何年生ですか?
4年次に就職活動はできそうですか?
現在3年生で、1,2年次ともに35単位取得している場合は次のように書けます。
stdinまたはinputに次のように入力してみましょう。
35
35
0
0
4
結果として次のように出れば正解です。
1年次の単位取得数は何単位ですか?
2年次の単位取得数は何単位ですか?
3年次の単位取得数は何単位ですか?
4年次の単位取得数は何単位ですか?
今何年生ですか?
4年次に就職活動はできそうですか?
次に、条件を多少複雑にして、細かく分けていくことを試して見ましょう。
ここで行っているのは、まず、学年の入力が適正かどうかを判断します。1年生や5年生以上というのは、問題があるので、それを洗い出します。シンボル || は「または(or)」を表す論理演算子になります。
次に、取っている単位数に応じてコメントを変化させることを考えます。ここでは、範囲を考える必要があるので、例えば、3年終了時で80単位以上104単位未満の範囲で単位取得している場合、就職活動は大変そうなので「大丈夫ですか?」と聞いてあげましょう。
式で書けば、
80 <= hantei < 104
と書けばいいのですが、Cではそのように書けません。そこで、シンボル
サンプル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年生はどのように判定されるか?
答:学年の入力が微妙です
まさか、すでに留年確定ですか?