こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語 関数

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回かける方法があるようです)

投稿日時 - 2003-11-19 22:54:08

QNo.710154

すぐに回答ほしいです

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

#2です。

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

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

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

投稿日時 - 2003-11-20 22:45:22

お礼

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

指摘のとおりです。間違っていました。
#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:47

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

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

投稿日時 - 2003-11-20 15:35:37

お礼

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

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:40

ANo.3

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)); のように書きます。
 

投稿日時 - 2003-11-20 02:00:18

お礼

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

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

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

投稿日時 - 2003-11-20 22:05:25

ANo.2

int power4(int x){

return x*x*x*x;

}

あとは、メインから
printf power4(x);
と呼ぶだけです。

投稿日時 - 2003-11-19 23:06:12

お礼

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

int power4(int x){

return x*x*x*x;

}

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

投稿日時 - 2003-11-20 22:03:36

ANo.1

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

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

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

投稿日時 - 2003-11-19 23:02:16

お礼

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

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

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

投稿日時 - 2003-11-20 22:02:28

あなたにオススメの質問