dポイントプレゼントキャンペーン実施中!

int型整数値の四乗値を返す関数int power4(int x)を作りたいのですが…

int i;

puts("整数を入力してください:")

for (i = 0; i < 10; i++) {

        printf("%d\n",i*i*i*i);
}

このようにすれば多分四乗になるとおもうのですが、
この場合、範囲がi<10のように指定されてしまいます。
どのようにすれば範囲に関係なく四乗の値が求められるのでしょうか?

C言語初心者で、まだ基本的なものしか勉強していないのですが、
どなたかアドバイスよろしくお願いします。

(作り方は二通りあって、factorialを使う方法と上のように単純に4回かける方法があるようです)

A 回答 (5件)

#2です。



暫く触っていなかったら、printf 文 の使い方を間違えました(^_^;

で、
>printf(“その数の四乗値は%dです。\n”,power4(int x);

ですが、
printf(“その数の四乗値は%dです。\n”,power4(num));
ですね。
>scanf(%d,&num);
で、num で受け取っているので、(int x)では、受け取った値が渡りません。
後ろの")"も不足です。
    • good
    • 1
この回答へのお礼

再びありがとうございます。

指摘のとおりです。間違っていました。
#include "stdafx.h"
{
int power4(int x);


return(x*x*x*x);

return 0;
}

int_tmain(int argc,_TCHAR*argv[])
{

int num;
int power4(int x);


puts("整数を入力してください:");

scanf("%d",&num);

printf("その数の四乗値は%dです。\n",power4(num));

return 0;
}

作り直してやってみたのですが、だめでした。
あとちょっとだと思うのですが…。
どこがだめなのでしょうか?
もしよかったら、補足お願いします。

お礼日時:2003/11/21 17:56

4乗なので確実に「正の数」になりますから、unsigned longにすると、なお範囲が広がるかも。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

longはまだ習っていないのですが、機会があったら使ってみたいと思います。

教科書やみなさんの回答を参考にして作ってみました。

#include “stdafx.h”
{
int power4(int x);

return x*x*x*x;
}

int_tmain(int argc,_TCHAR*argv[])
{
int num;
puts(“整数を入力してください:”);
scanf(%d,&num);

printf(“その数の四乗値は%dです。\n”,power4(int x);

return 0;
}

こんな感じでしょうか…
明日にでも学校でやってみます

お礼日時:2003/11/20 22:12

4乗の関数は#2さんのように書けばOKです。


範囲のチェックは#1さんの書いてください。

ところでint型は、16ビットまたは32ビット(処理系によって違います)です。
扱える数値の範囲は、
・16ビットでは、-32768~32767
・32ビットでは、-2147483648~2147483647
となりますので、演算結果がこの範囲を超えないように引数を制限しなければ
いけません。(オーバーフローしてしまいます)
確実に32ビットとして扱いたい場合は、long型を使ってください。
http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-2

C言語の初心者でしたら、まずこちらを参考にされるといいと思います。
関数については「12.関数を自作しよう」のところを。
http://homepage1.nifty.com/toshio-k/prog/c/

物足りないようならこちらも参考にしてください。
http://www9.plala.or.jp/sgwr-t/
http://naruzo.cside1.com/kouza/kouza.php?id=c04

尚、関数の呼び出し方について、#2さんはちょっと勘違いされたようです。
通常は、
・ans = power4(x); のようにして変数ansに値を取得するか、
・printf("ans = %d\n", power4(x)); のように書きます。
 
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

C言語初心者なので、本当にわからないのですが
教えてもらったページを参考にして勉強してみようと思います。

ありがとうございました。

お礼日時:2003/11/20 22:05

int power4(int x){



return x*x*x*x;

}

あとは、メインから
printf power4(x);
と呼ぶだけです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

int power4(int x){

return x*x*x*x;

}

参考になりました。
関数はメインの前におくと、習いました。やってみます。

お礼日時:2003/11/20 22:03

10回ループさせているところがわからないのですが、printfのところでiを4乗していますので、ループは必要ないと思います。



もし入力させる数値を0~10のように限定するなら、

if(i < 0 || i > 10){
printf("数値が範囲外です\n");
exit(-2);
}
のように制御した方がいいと思います。
またintは-65536~65535までしか表せませんので、longにしておいた方が無難だと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

すみません、ループは必要ないですね…。
勘違いしていました。

intは-65536~65535までだったんですね。
まだ勉強し始めたばかりで、知りませんでした。
longはまだ習っていないのですが、参考になりました

お礼日時:2003/11/20 22:02

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