どこがおかしくて計算結果がおかしくなるのか、具体的に指摘して頂けると幸いです。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float daritu(int a, int b){
float average;
average = a / b;
return 0;
}
main()
{
float k;
int j;
k = daritu(j, 13);
scanf("%d", &j);
printf("average = %f\n", &k);
return 0;
}
No.5
- 回答日時:
どんな数字を入力してもaverage = 0.000000になる直接の原因は、
printf("average = %f\n", &k);
の部分にあります。
%fはdouble型の実引数を期待しているので、&kにあたる部分はfloatまたはdouble型の実引数を渡さなければなりません。ところが実際に渡しているのはfloat*というポインタです。
もっと正確にいうと、float*とdoubleではサイズが異なるので(通常4バイトと8バイトなので)、実際には渡していない実引数をprintf内部で参照しています。本来未定義であるはずの値がたまたま(double型として解釈したときに)非常に小さい値であったため、結果が0になっていると思われます。参考までに、%fではなく%eにしてみれば、非常に小さい値だということが分かると思います。
他にもいろいろおかしなところがあるので、ここだけ直しても期待通りの動作にはなりませんが、とりあえず直接の質問にだけお答えします。
No.3
- 回答日時:
k=daritu(j,13);で計算を行うのだと思いますが、jの値はこの時点で不定です。
おそらく0が設定されているでしょう。次のscanfと行の入れ替えが必要です。
daritu関数は戻り値を期待されていますが、return 0;となっているので、
たとえ計算が行われても、0しか戻りません。return average;となおすべき
でしょう。
ここからはあまり自信がありませんが、int同士の演算結果はintになったように
記憶しています。ですから、daritu関数側のaverage=a/bの結果はintになる
のでは無いでしょうか?floatに変換してから計算した方が良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
O(n log n)について2
-
ExcelでPC(パソコン)によって...
-
VBAでミリ秒まで出力する方法
-
VBAでの割り算の余りの求め方
-
パソコンで階乗を計算
-
VB6.0での小数点の扱いについて
-
16進数 加算 減算 C言語
-
三角比の俯角の計算
-
有効数字について 以前質問をし...
-
VB6のFIX関数での誤差について
-
floatの有効桁数
-
三菱シーケンサ(Aシリーズ)で...
-
バタフライ演算
-
EXCELの関数"STDEV(標準偏差)"...
-
4096bitを95種類で表現すると何...
-
2進数の足し算(C言語)
-
10進数での「25」が2進数では「...
-
C#プログラミング、少数の取...
-
VB.net Double と...
-
べき指数の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
三角比の俯角の計算
-
c languageで 簡単な質問があ...
-
16進数 加算 減算 C言語
-
ExcelでPC(パソコン)によって...
-
VB.net Double と...
-
”/”を使わずに割り算したいんで...
-
ExcelのINT関数の計算結果がお...
-
有効数字について 以前質問をし...
-
floatの有効桁数
-
三菱シーケンサ(Aシリーズ)で...
-
距離から緯度経度を求める方法
-
VBAでミリ秒まで出力する方法
-
EXCELの関数"STDEV(標準偏差)"...
-
除算を使わずに10で割りたい。
-
C言語プログラミングにて、arct...
-
VB6.0での小数点の扱いについて
-
VBAでの割り算の余りの求め方
-
255の2の補数、B'00000001'が-...
-
変換指定子%22-16gの表示...
おすすめ情報