- ベストアンサー
教えてください!!
C言語を勉強しているのですが、整数ABを入力して、AのB乗を求めるにはどうしたらいいのですか?while文でお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
i++;の後に}が抜けてます。while(i <= nb)ではなく、while(i < nb)です。ncの初期値は1にしましたか? while文の中にnc *= na;を入れておけば、ループの数dだけnc * naが実行されるはずです。 念のため以下に全プログラムを載せておきます。この通りにすればうまくいきます。(確認しました) #include <stdio.h> int main(void) { int na,nb,nc = 1,i; printf("整数A : "); scanf("%d",&na); printf("整数B : "); scanf("%d",&nb); i = 0; while(i < nb){ nc *= na; i++; } printf("%dの%d乗は%dです。\n",na, nb,nc); return 0; }
その他の回答 (3)
- labbotto37
- ベストアンサー率50% (37/74)
i++によって、iは0からwhileの中を1回実行するごとに1増えて行きます。 i = B となったところで i < B の条件を満たさなくなるのでwhileループを抜けます。 ということはiが0からB-1までB回繰り返されることになります。
- labbotto37
- ベストアンサー率50% (37/74)
C *= A をB回繰り返せばいいだけです。 i = 0; while(i < B){ C *= A; i++; }
補足
i=0; i++で、c*=AをB回繰り返すことになるのでしょうか?iの意味がいまいち分からないのですが。宜しくお願いします。
- labbotto37
- ベストアンサー率50% (37/74)
whileを使わないといけないのですか?forを使ったほうが簡単だと思うのですが。 int A,B,C = 1,i; %-略- for(i = 0; i < B ; i++){ C *=A; } %-略- ちょっと変えればwhileでもできないことはないでしょう。 ちなみに階乗を計算してくれるpowという関数もmathライブラリにあります。
補足
whlie式お願いします。while式での条件式が分かりません。
補足
iの回数だけが増えてしまって、Cには関係がないように思うのですが。これでは駄目でした。 printf("整数A : " ); scanf("%d", &na); printf("整数B : " ); scanf("%d", &nb); i=0; while (i<= nb) { nc *= na; i++; printf("%dの%d乗は%dです。\n",na, nb,nc );