C言語では、ユーザ入力を複数回受け取り条件に応じて処理を分岐させる課題は基礎力を確認するのに最適です。今回は「最大10回の身長入力、負数入力で終了、自分の学籍番号下1桁の入力は無視」という条件に対応した平均身長計算の例を紹介します。
課題条件の整理
- 最大10回まで入力可能
- 浮動小数点数で入力
- 負数入力でその時点で入力終了
- 学籍番号下1桁(ここでは4)の入力は無視
- 平均は無視しなかった有効入力のみで計算
サンプルプログラム
#include <stdio.h>
int main(void) {
float height, sum = 0.0, average;
int i, count = 0;
int N = 4; // 無視する入力回数
for(i = 1; i <= 10; i++) {
printf("%d人目の身長を入力してください: ", i);
scanf("%f", &height);
if(height < 0) {
break; // 負数入力で終了
}
if(i == N) {
continue; // N回目を無視
}
sum += height;
count++;
}
if(count > 0) {
average = sum / count;
printf("平均身長: %.2f\n", average);
} else {
printf("有効な身長データがありません。\n");
}
return 0;
}
ポイント解説
- break: 負数入力時にループを即終了
- continue: N回目を平均計算から除外するために使用
- count: 有効入力のみを数えるカウンタ
- 平均計算時にはcountが0でないか確認することで0除算を防ぐ
動作例
例えば以下の入力があった場合:
- 1人目: 170.5
- 2人目: 168.0
- 3人目: 172.3
- 4人目: 999.9 (無視)
- 5人目: 165.2
この場合の平均は (170.5+168.0+172.3+165.2)/4 = 168.5 となります。
まとめ
このプログラムでは、forループ、if文、break/continueの使い方、浮動小数点の平均計算、無効入力の除外などC言語基礎の重要ポイントをすべて網羅しています。条件付き処理に慣れることで、より複雑な課題にも対応できる力が身につきます。


コメント