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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既約分数の表示プログラム
-
defineで定数が置き換えられな...
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
コンパイルエラーについて
-
cshの文字列操作(0埋め)
-
c言語でAからZまでを表示する...
-
10個出力で改行したいのですが...
-
ifなんですが
-
ブラックジャック
-
C言語 プログラミング
-
if~else文の中にまたif~else...
-
3つの整数を画面から入力して...
-
CTRL+Dでループを抜けるには
-
入力したお金の金額からお札の...
-
コーディング
-
九九を表示させるプログラム
-
万年カレンダーのC言語プログラ...
-
%P と %X の違い
-
BMI値から体型を判定するプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
【C言語教えてください】sin波...
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
strcmp
-
4の倍数を論理演算で表す。。
-
C言語での、年複利の計算方法...
-
C言語 プログラミング
-
scanfに文字が入力されたときに...
-
hit&bolwのプログラミングがで...
-
%P と %X の違い
-
unsigned int型について
-
printf( " %2d", p * q );
-
cshの文字列操作(0埋め)
-
改行について 1行に何個かづ...
-
8人分のテストの点数を入力し、...
-
入力したお金の金額からお札の...
-
三角形の判別
-
テキストカーソル位置の取得
おすすめ情報