• ベストアンサー

教えてください!!

C言語を勉強しているのですが、整数ABを入力して、AのB乗を求めるにはどうしたらいいのですか?while文でお願いします。

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

  • ベストアンサー
回答No.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)

回答No.3

i++によって、iは0からwhileの中を1回実行するごとに1増えて行きます。 i = B となったところで i < B の条件を満たさなくなるのでwhileループを抜けます。 ということはiが0からB-1までB回繰り返されることになります。

jjjj27
質問者

補足

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 );

回答No.2

C *= A をB回繰り返せばいいだけです。 i = 0; while(i < B){ C *= A; i++; }

jjjj27
質問者

補足

i=0; i++で、c*=AをB回繰り返すことになるのでしょうか?iの意味がいまいち分からないのですが。宜しくお願いします。

回答No.1

whileを使わないといけないのですか?forを使ったほうが簡単だと思うのですが。 int A,B,C = 1,i; %-略- for(i = 0; i < B ; i++){ C *=A; } %-略- ちょっと変えればwhileでもできないことはないでしょう。 ちなみに階乗を計算してくれるpowという関数もmathライブラリにあります。

参考URL:
http://www.bohyoh.com/CandCPP/C/Library/pow.html
jjjj27
質問者

補足

whlie式お願いします。while式での条件式が分かりません。

関連するQ&A