「教えて!ピックアップ」リリース!

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

A 回答 (5件)

>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言語にべき乗の演算子はありません。
^ は、べき乗ではなく、別の意味を持っています。
    • good
    • 0

nのscanfがないじゃん

    • good
    • 0

>int m,n;


>int a,sum;
>
>printf("整数を入力してください:");
>scanf("%d",&m);
>printf("何乗しますか?");
>sum = power(n,m);

nが未初期化のまま参照されてますが問題ありませんか?
aが未使用だったりしますが(以下略)

お友達が同じ質問を上げて、回答貰っているみたいですよ。
http://oshiete.goo.ne.jp/qa/8121342.html
    • good
    • 0

どう「実行できない」のですか?

    • good
    • 0

>int main()


ではなく void main()

でpower関数の中ではmもn上の計算がされていない。
>kotae = 1;
>for(a=1; a<=n; a++)
>kotae = kotae * m;
ではなく
kotae = m ^ n;
でよろしいのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング