• ベストアンサー

大学の課題で2のx乗で10000を越えるのはいくつ

という課題を受けました。どこが悪いのか見ていただけないでしょうか。 #include<stdio.h> #include<math.h> main() { double x,kazu; kazu=1.0; x=0.0; while(kazu>10000); { double kazu=pow(2.0,x); printf("%f日で%f個となる。\n",x,kazu); x=x+1; } }

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

kazuが10000.o未満の間実行するというのが、正解ですが、 10000.0を超えた値も1回は表示したいというのが趣旨なら 以下のようにしてください。 ------------------------------------- #include<stdio.h> #include<math.h> main() { double x,kazu; kazu=1.0; x=0.0; do { kazu=pow(2.0,x); printf("%f日で%f個となる。\n",x,kazu); x=x+1; }while(kazu < 10000.0); } ------------------------------------ 以下、実行結果です。 0.000000日で1.000000個となる。 1.000000日で2.000000個となる。 2.000000日で4.000000個となる。 3.000000日で8.000000個となる。 4.000000日で16.000000個となる。 5.000000日で32.000000個となる。 6.000000日で64.000000個となる。 7.000000日で128.000000個となる。 8.000000日で256.000000個となる。 9.000000日で512.000000個となる。 10.000000日で1024.000000個となる。 11.000000日で2048.000000個となる。 12.000000日で4096.000000個となる。 13.000000日で8192.000000個となる。 14.000000日で16384.000000個となる。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

Xは整数ですか?浮動小数点数ですか?

回答No.1

> while(kazu>10000); - ケツの';' 不要(つか、書いちゃダメ) - 条件が逆 > double kazu=pow(2.0,x); - 'double'は不要(つか、書いちゃダメ)

関連するQ&A