練習 4(提出プログラム名:p0204a.c)
以下の例のように実行できるプログラムを作りなさい.提出ファイル名は p0204a.c としなさい.
このプログラムでは入力される 2 人の成績の差(絶対値)を a として,
(1) a == 0 ならば:「全く同じですね」と表示する.
(2) (1) ではないが a < 10 ならば:「ほぼ同じですね」と表示する.
(3) (1), (2) ではないが a < 20 ならば:「差がつきましたね」と表示する.
(4) 上のいずれもでもない場合:「勝負になりませんね」と表示する.
ただし,絶対値 a を求めるにあたって,C 言語に予め用意されている abs という関数を使ってはいけません.
【ヒント1】絶対値 |x-y| の求め方
a = x-y;
if ( a < 0 )
{
a = -a;
}
【ヒント2】
この問題のように複数の if – else が必要な場合は以下のように書くと良いです:
if ( a == 0 )
{
....... ← 条件(1)が成り立つときの処理
}
else if ( a < 10 ) ← ここを (a < 10) && (a != 0) と書く人がいますが,&& (a != 0) は不要です.
1番目の if の条件が成立していないので,この時点で a != 0 なのは明らかです.
{
...... ← 条件(1)は成り立たないが,条件(2)は成り立つときの処理
}
else if ( 条件(3) )
{
...... ← 条件(1),(2) は成り立たないが,条件(3)は成り立つときの処理
}
else
{
...... ← いずれも成り立たないときの処理
}
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
2 人の成績を入力してください:70 70 全く同じですね⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
2 人の成績を入力してください:75 70 ほぼ同じですね⏎
- 【プログラムの実行例】(その3)※赤字は実行時にキーボードから入力する内容
2 人の成績を入力してください:75 85 差がつきましたね⏎
- 【プログラムの実行例】(その4)※赤字は実行時にキーボードから入力する内容
2 人の成績を入力してください:60 80 勝負になりませんね⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上に示した4通りの実行例を試していない.
■ ヒントを見落としていて,プログラムが必要以上にごちゃごちゃしている.
■ 条件として「a < 10」と書くべきところを「a <= 10」と書いてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 練習3 (p0203a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習5 (p0205a.c) ]