- ベストアンサー
大学の課題で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; } }
- みんなの回答 (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)
Xは整数ですか?浮動小数点数ですか?
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> while(kazu>10000); - ケツの';' 不要(つか、書いちゃダメ) - 条件が逆 > double kazu=pow(2.0,x); - 'double'は不要(つか、書いちゃダメ)