printfの書式指定子は、後ろに渡す値の型に合わせます。整数を表示する %d と、小数を表示する %f を区別しましょう。
int count = 3;
double temperature = 23.5;
printf("%d\n", count);
printf("%.1f\n", temperature);表示は3と23.5です。%.1f は小数点以下1桁で表示する指定です。printfに渡すfloatはdoubleへ変換されるため、floatにも%fを使います。
合わない指定をしたらどうなる?
整数を%fで表示するなど、型と書式が一致しない場合は未定義動作になります。表示結果から規則を推測するのではなく、変数宣言と書式を確認します。コンパイラの警告も手掛かりになります。
scanfとは区別する
入力のscanfでは、float型の変数のアドレスには%f、double型の変数のアドレスには%lfを使います。出力のprintfと入力のscanfでは、渡すものも書式の扱いも異なります。