質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

533閲覧

c言語のfloat型演算について

K.M.PEANUTS

総合スコア40

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/10/18 01:14

以下のコードで、int型の整数a,bを読み込んで、(1/b)^aを返す関数を作ろうとしました。しかし、試行錯誤しても「0.00000」や「1.00000」など正しくない値が返されてしまうため、どうすれば良いか教えてください。ただし、読み込む二つの整数は絶対にint型でお願いします。それ以外はどう変えても大丈夫です。お願いします。

c

1float my_pow_neg(int a,int b) { 2int i; 3float res=1, one=1; 4 for(i=0; i<a; i++) { 5 res *= one/b; 6 } 7 return res; 8}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/10/18 01:19

どういう値を与えたらどういう結果になるのか、具体的に提示しましょう
thkana

2020/10/18 01:28 編集

試した値と期待する返り値、実際に得られた値を記して下さい。 手元で int main(void){ printf("%f\n",my_pow_neg(2,2)); return 0; } では0.25(正しい値)が返っています。
otn

2020/10/18 01:25

呼び出し方が悪いのでは?
guest

回答1

0

ベストアンサー

こちらで確認した限りでは正しく動作しています。

C

1# include <stdio.h> 2float my_pow_neg(int a,int b) { 3int i; 4float res=1, one=1; 5 for(i=0; i<a; i++) { 6 res *= one/b; 7 } 8 return res; 9} 10int main() 11{ 12 printf("%f\n",my_pow_neg(2,2)); 13 printf("%f\n",my_pow_neg(2,3)); 14 printf("%f\n",my_pow_neg(3,2)); 15 return 0; 16} 17

実行結果
0.250000
0.111111
0.125000

投稿2020/10/18 01:35

編集2020/10/18 01:37
tatsu99

総合スコア5493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K.M.PEANUTS

2020/10/18 02:05

大変申し訳ございません。呼び出すときに単純なミスをしていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問