• ベストアンサー

C言語 配列について

for(j=0;j<=maxpop;j++){ d[200][j]=d[200][j]/1000; printf("%5d\n",d[200][j]); } のd[200][j]だけの値が 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 3 8 6 7 10 16 10 19 25 32 50 42 72 85 98 126 157 182 210 264 237 288 321 363 374 385 370 446 425 401 383 351 373 292 296 279 199 204 159 116 84 69 57 49 22 16 5 3 5 1 0 0 0 0 0 0 0 0 0 0 0 0 となり、これをそれぞれ1000で割った値(d[200][j]/1000)を出したいのですが、うまくいきません。 すべて値が0.000となってしまいます。 どうすればよいでしょうか? 何が間違っていますか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

表示させるだけなら、dが整数型でも浮動小数点型で計算させれば問題ないように思います。 for(j=0;j<maxpop;j++){ printf("%5lf\n",(double)d[200][j]/1000.0); } 計算結果を代入したいのなら、代入先が整数型じゃ無理でしょう。

その他の回答 (2)

noname#15691
noname#15691
回答No.2

配列dはどのように宣言されているか書いて頂くとわかりやすいです。 わり算の値が整数になってしまう一番の原因は、「整数/整数」だからです。 「5/10は0」ですが「5.0/10.0は0.5」になります。 あと、配列dの型が整数であれば、いくら計算しても結果は整数です。 そのほか、printfの書式指定が%dになってるので整数でしか表示されませんけどいいのですか?

  • yasuch
  • ベストアンサー率41% (27/65)
回答No.1

配列dの型はなんですか? floatかdoubleにして、printf()の出力も"%f"などに 修正すればよいのでは?

関連するQ&A