Cプログラムで整数と浮動小数点数の合計を求める方法
この記事では、整数型の2つの数値 a、b と、浮動小数点型の2つの数値 c、d が与えられたとき、それぞれの合計を求めるCプログラムの書き方を解説します。具体的には、「a と b の合計」「c と d の合計」に加えて、「a と c の合計」も計算します。データ型が異なる数値を足し合わせる場合、printf関数の書式指定子を正しく選ぶことが重要で、指定の仕方によって出力結果が変わります。
例として、a = 5、b = 58、c = 6.32、d = 8.64 が入力された場合、出力は次のようになります。
- a + b = 63
- c + d = 14.960001
- a + c = 11.320000
解き方のポイント
この問題を解くための手順は以下の通りです。
a + b を出力する場合: 両方とも整数型(int)なので、printf関数では書式指定子「%d」を使用します。
c + d を出力する場合: 両方とも浮動小数点型(float)なので、書式指定子「%f」を使用します。
a + c を出力する場合: 片方が整数型、もう片方が浮動小数点型です。この場合、整数は自動的に浮動小数点数へと型変換(暗黙の型変換)されるため、書式指定子「%f」を使うことで正しい結果が得られます。
サンプルコード
以下の実装例を見て、理解を深めましょう。
#include <stdio.h>
int main(){
int a = 5, b = 58;
float c = 6.32, d = 8.64;
printf("a + b = %d\n", a + b);
printf("c + d = %f\n", c + d);
printf("a + c = %f\n", a + c);
}入力
a = 5, b = 58; c = 6.32, d = 8.64;
出力
a + b = 63 c + d = 14.960001 a + c = 11.320000
まとめ
このプログラムからわかるように、printf関数で数値を出力する際は、そのデータ型に対応した書式指定子を選ぶことが大切です。整数同士の計算には「%d」、浮動小数点数を含む計算には「%f」を使うことで、意図した通りの出力を得られます。また、c + d の結果が「14.96」ではなく「14.960001」と表示されるのは、float型の精度限界によるものであり、より高い精度が必要な場合は double 型の使用を検討するとよいでしょう。
-
【C言語】演算子を使わずに2つの数値の合計を求めるプログラム
この記事では、C言語のプログラムにおいて+演算子などの演算子を一切使わずに、2つの数値の合計を求めて出力する方法を解説します。一見すると手強そうな問題ですが、printf()関数の「最小フィールド幅」指定を利用することでエレガントに解決できます。printf()では、書式指定子の * を使うことで、可変引数からフィールド幅(出力する最小文字数)を動的に受け取ることができます。例えば、「Hello」という文字列の前にx個の空白を挿入したい場合は、次のように記述します。サンプルコード#include<stdio.h> main() { i
-
【Python】2つのペアの合計差が最小になる数値の組み合わせを見つけるプログラム
問題の概要数値のリスト nums が与えられたとき、その中から2組の数値ペアを選び、それぞれのペアの合計値の絶対差が最小になるような組み合わせを求めたいとします。例えば、入力が nums = [3, 4, 5, 10, 7] の場合、出力は 1 になります。これは、(3 + 7) と (4 + 5) という2組のペアを選ぶことで、(3 + 7) - (4 + 5) = 1 という最小の差が得られるためです。解決のためのアルゴリズムこの問題は、以下の手順に従って解くことができます。空のリスト distances を用意します。i を 0 から nums のサイズ - 2 まで繰り返します。j を