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回かける方法があるようです)
No.5ベストアンサー
- 回答日時:
#2です。
暫く触っていなかったら、printf 文 の使い方を間違えました(^_^;
で、
>printf(“その数の四乗値は%dです。\n”,power4(int x);
ですが、
printf(“その数の四乗値は%dです。\n”,power4(num));
ですね。
>scanf(%d,&num);
で、num で受け取っているので、(int x)では、受け取った値が渡りません。
後ろの")"も不足です。
再びありがとうございます。
指摘のとおりです。間違っていました。
#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;
}
作り直してやってみたのですが、だめでした。
あとちょっとだと思うのですが…。
どこがだめなのでしょうか?
もしよかったら、補足お願いします。
No.4
- 回答日時:
4乗なので確実に「正の数」になりますから、unsigned longにすると、なお範囲が広がるかも。
回答ありがとうございます。
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;
}
こんな感じでしょうか…
明日にでも学校でやってみます
No.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)); のように書きます。
回答ありがとうございます。
C言語初心者なので、本当にわからないのですが
教えてもらったページを参考にして勉強してみようと思います。
ありがとうございました。
No.1
- 回答日時:
10回ループさせているところがわからないのですが、printfのところでiを4乗していますので、ループは必要ないと思います。
もし入力させる数値を0~10のように限定するなら、
if(i < 0 || i > 10){
printf("数値が範囲外です\n");
exit(-2);
}
のように制御した方がいいと思います。
またintは-65536~65535までしか表せませんので、longにしておいた方が無難だと思います。
回答ありがとうございます。
すみません、ループは必要ないですね…。
勘違いしていました。
intは-65536~65535までだったんですね。
まだ勉強し始めたばかりで、知りませんでした。
longはまだ習っていないのですが、参考になりました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
テキストカーソル位置の取得
-
4の倍数を論理演算で表す。。
-
cshの文字列操作(0埋め)
-
【C言語教えてください】sin波...
-
10個出力で改行したいのですが...
-
wsprintfの書式制御文字列につ...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
%P と %X の違い
-
C言語
-
strcmp
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
スレッドとメッセージキューに...
-
printf( " %2d", p * q );
-
Visual Sutdio 2017 でのC言語...
-
defineで定数が置き換えられな...
おすすめ情報