
としか出ません。
#include<stdio.h>
void main (void)
{
double a;
double b;
double c;
printf("Aを入力する");
scanf("%lf",&a);
printf("Bを入力する");
scanf("%lf",&b);
c=(2*a*b)/(a+b);
printf("平均値は");
printf("%8.6lf",c);
}
というプログラムを作ったのですが、プログラムはコンパイルするのですが出てくる答えは0.000000しか出ません。ほかにもよく0.0000という答えが出ることがあります。原因を教えていただけませんでしょうか。
No.5ベストアンサー
- 回答日時:
# 素で知りませんでした < 調和平均
修正するときのコツは、問題を切りわけることです。
考えられるのは
・表示だけが正しくない
・a,bが正しくない
・c=(2*a*b)/(a+b);が正しくない
・(これに書いていないところで) cの値が変わっている
くらいでしょうか?
%fは固定小数点表示で、指定した値より小さな分は表示できません。
例えば、 10の-20乗なども 0.000000 と表示されてしまいます。
→ %e(指数表示)や%g(値の大小によって、固定小数点表示と指数表示を切り替える)を使って、c==0なのか、c!=0なのかを確認する。
a,bについても同様に
printf("a=%g b=%g\n", a, b);
として、入力した値と同じか確かめる。気になるなら
printf("2*a*b=%g a+b=%g\n", 2*a*b, a+b);
とでもやって、途中経過も確認する。
あとは、次のことがあれば、こちらでも検証しやすいです。
・実際にa,bとしてどんな値を入力したのかを補足あたりに書いて、回答者側でも確認できるようにする。
・あなたの使っている環境(OS,Cコンパイラの種類,バージョン)を明らかにする
No.4
- 回答日時:
>printf("%8.6lf",c);
これはC99仕様のCででしか許されません。
http://www.kijineko.co.jp/tech/superstitions/pri …
特に、long doubleをサポートする処理系では「%Lf」で「引数はlong doubleである」と認識するので「%8.6lf」の指定で「引数はlong doubleである」として処理する可能性があります。
もし、long doubleと勘違いされた場合、何が表示されるかは未定義ですが、多くの場合、cがどんな値になっても「0.000000」しか出ないでしょう。
No.3
- 回答日時:
「調和平均」ってやつですね>#2.
どういうコンパイラでどんな入力をしたときに「出てくる答えは0.000000」となるんでしょうか?
# 「main の返り値を void としてるのが気に入らない」とか... はないよなぁ, いくらなんでも.
No.2
- 回答日時:
> c=(2*a*b)/(a+b);
aとbの平均の計算式をよく考えてください。
0しか出ない、ということは無いですが、平均になってません。
現在は、aかbのどちらか一方が0の時、c=0になります。
> printf("%8.6lf",c);
コンパイラによっては、何が起こるかわかりません。
http://www.kijineko.co.jp/tech/superstitions/pri …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.NET 小数点以下の切り捨てにつ...
-
get_sqr()という関数について
-
doubleの変数にintとintの割り...
-
C 開放してるのにエラー(doubl...
-
C言語で内積、、、わかりません。
-
c言語 プログラム
-
このプログラムを添削してください
-
プログラムでの数字につく”f”の...
-
fgets()による繰り返し入力(c言語)
-
C言語を実行すると-infが出てき...
-
floating point not loadedとは?
-
float型とdouble型の変数の違い...
-
C#、太らせた多角形を塗りつぶ...
-
c言語で、繰り返し文の中で、0....
-
実数型の変数に値を入力した計...
-
複利の利率を求めるプログラム...
-
int とdoubleの比較
-
c言語でDFTのプログラムを作成...
-
C言語のプログラムで#include<m...
-
C言語で-23乗を取り扱うには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語の型による処理速度の違い
-
C言語 関数プロトタイプ宣言の...
-
2次方程式の解を求めるプログ...
-
関数におけるif文とreturn文に...
-
doubleは常に%lfとするべきなのか
-
int とdoubleの比較
-
C言語のプログラムで#include<m...
-
C言語で-23乗を取り扱うには
-
データ数の多い構造体配列
-
指数の表示
-
C言語のpow関数の不具合
-
c言語のプログラミングについて...
-
c言語のコンパイルエラー canno...
おすすめ情報