- 締切済み
C言語についてです。
mのn乗を計算する関数power()を作成せよ. ただし,関数power()はm,nを引数とし, 戻り値としてmのn乗の値を返すものとする. m,nは,正整数とする.提出するプログラムには, 関数power()だけでなく,m,nを入力し, mのn乗を出力するメイン関数main()を含むものとする. main()は,power()の前に記述すること. また,power()のプロトタイプ宣言も記述する これについて、作ってみたのですが実行できません。 どこが間違ってるか教えてください。 #include<stdio.h> int power(int m, int n); int main() { int m,n; int a,sum; printf("整数を入力してください:"); scanf("%d",&m); printf("何乗しますか?"); sum = power(n,m); printf("%dの%d乗は%dです。\n",n,m,sum); } int power(int m, int n) { int a, kotae; kotae = 1; for(a=1; a<=n; a++) kotae = kotae * m; return kotae; }
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
>printf("整数を入力してください:"); >scanf("%d",&m); >printf("何乗しますか?"); >sum = power(n,m); nを入力していない、という点については、 他の回答者さんからの回答のとおりです。 質問者さんは、「mをn乗したい」のですか? それとも、「nをm乗したい」のですか? なお、#1さんの回答はでたらめなので、信じてはいけません。 >>int main() >ではなく void main() main関数の戻り値はint型であるのが正しいです。 質問者さんのコードにおいて、main関数から returnしていないことの方が問題ありです。 >kotae = m ^ n; >でよろしいのでは? C言語にべき乗の演算子はありません。 ^ は、べき乗ではなく、別の意味を持っています。
- tsunji
- ベストアンサー率20% (196/958)
nのscanfがないじゃん
- Wr5
- ベストアンサー率53% (2173/4061)
>int m,n; >int a,sum; > >printf("整数を入力してください:"); >scanf("%d",&m); >printf("何乗しますか?"); >sum = power(n,m); nが未初期化のまま参照されてますが問題ありませんか? aが未使用だったりしますが(以下略) お友達が同じ質問を上げて、回答貰っているみたいですよ。 http://okwave.jp/qa/q8121342.html
- Tacosan
- ベストアンサー率23% (3656/15482)
どう「実行できない」のですか?
- papapa0427
- ベストアンサー率25% (371/1472)
>int main() ではなく void main() でpower関数の中ではmもn上の計算がされていない。 >kotae = 1; >for(a=1; a<=n; a++) >kotae = kotae * m; ではなく kotae = m ^ n; でよろしいのでは?