C言語で合計と平均を求める方法と型変換の使い方(intとdouble)
C言語では、数値の合計や平均を計算するのに int
と double
を使います。今回は、その方法をわかりやすく解説します。
合計と平均の計算方法
まず、整数型 int
を使って合計と平均を計算する方法を見ていきましょう。
合計を計算する
#include <stdio.h>
int main() {
int a = 10, b = 20, c = 30;
int sum = a + b + c;
printf("合計: %d\n", sum);
return 0;
}
解説
a, b, c の値を足して sum に代入しています。
%d
は整数の出力に使います。
平均を計算する
#include <stdio.h>
int main() {
int a = 10, b = 20, c = 30;
int sum = a + b + c;
double average = sum / 3.0; // 3.0 として double にキャストする
printf("平均: %f\n", average);
return 0;
}
解説
合計 sum を 3.0 で割ることで、小数点以下の計算が可能になります。
double 型にキャストすることで、整数型の割り算で失われる小数を保ったまま計算できます。
intとdoubleの型変換(キャスト)
C言語では、**異なる型(intとdoubleなど)を混ぜて計算する場合、意図的に型変換(キャスト)**をすることで、より正確な結果が得られます。
キャスト(型変換)のやり方
int a = 5, b = 2;
double result;
result = (double)a / b;
printf("結果: %f\n", result); // → 結果: 2.500000
解説
- a は int 型 → (double)a で 5.0 に変換
- 5.0 / 2 の計算になるので、結果も double 型になって小数点以下も正しく表示される
キャストしなかった場合
result = a / b;
printf("結果: %f\n", result); // → 結果: 2.000000
- a / b は整数同士の割り算になるため、2.5 ではなく 2 になってしまう
- result は double 型でも、計算の時点で小数が失われている!
ポイントまとめ
-
int / int
→ 結果はint(小数点以下は切り捨て) - 小数を出したいときは、少なくともどちらか一方をdoubleにキャストする!
実際に使ってみよう:合計と平均を計算するプログラム
実際に3つの数値を使って合計と平均を計算してみましょう。
#include <stdio.h>
int main() {
int a, b, c;
printf("3つの整数を入力してください(例:10 20 30): ");
if (scanf("%d %d %d", &a, &b, &c) != 3) {
printf("入力エラーです。\n");
return 1;
}
int sum = a + b + c;
double average = sum / 3.0;
printf("合計: %d\n", sum);
printf("平均: %f\n", average);
return 0;
}
入力例と出力例
入力例 1
10 20 30
出力例 1
合計: 60
平均: 20.000000
入力例 2(入力エラー)
10 20 abc
出力例 2
入力エラーです。
注意点
- 整数同士の割り算(int / int)は必ず小数点以下が切り捨てられます。小数点以下も必要な場合は、必ずどちらか一方を
double
型にキャストしましょう。 -
scanf
での入力時、想定外の値(例:文字列や小数点付きの数値)を入力すると、正しく読み取れずエラーになります。入力値の検証やエラー処理をしっかり行いましょう。 -
printf
で%f
を使う場合、対応する変数はdouble
型である必要があります。int
型やfloat
型をそのまま渡すと予期しない動作になることがあります。 - 計算結果を
int
型の変数に代入すると、小数点以下は自動的に切り捨てられます。平均値など小数が必要な場合はdouble
型を使いましょう。