C言語で累乗を計算するプログラムの作成方法【サンプルコード付き】
ユーザーから底(基数)と指数として2つの整数を入力してもらい、その累乗を計算するCプログラムについて解説します。
例
累乗の計算は、次のように行われます。
- 底(base)= 3
- 指数(exponent)= 4
- 累乗(power)= 3 × 3 × 3 × 3 = 81
アルゴリズム
以下の手順に従ってプログラムを作成します。
ステップ1:int型とlong型の変数を宣言する。
ステップ2:コンソールから底の値を入力する。
ステップ3:コンソールから指数の値を入力する。
ステップ4:whileループで繰り返し処理を行う。
指数が0でない間:
i. value *= base(valueにbaseを掛ける)
ii. --exponent(指数を1減らす)
ステップ5:結果を出力する。
C言語での実装例
以下のプログラムは、C言語で指定した数の累乗を計算する方法を示したものです。whileループを使い、指数の回数だけ底を掛け合わせることで累乗を求めています。
#include<stdio.h>
int main(){
int base, exponent;
long value = 1;
printf("Enter a base value:\n ");
scanf("%d", &base);
printf("Enter an exponent value: ");
scanf("%d", &exponent);
while (exponent != 0){
value *= base;
--exponent;
}
printf("result = %ld", value);
return 0;
}
出力結果
上記のプログラムを実行すると、次のような結果が得られます。
Run 1:
Enter a base value:
5
Enter an exponent value: 4
result = 625
Run 2:
Enter a base value:
8
Enter an exponent value: 3
result = 512
実数の累乗を求める場合(pow関数を使用)
実数の累乗を求めたい場合は、math.hヘッダーファイルに用意されている標準ライブラリ関数「pow」を使用します。pow関数は浮動小数点数同士の累乗計算にも対応しているため、小数の底や指数でも正確な計算が可能です。
#include<math.h>
#include<stdio.h>
int main() {
double base, exponent, value;
printf("Enter a base value: ");
scanf("%lf", &base);
printf("Enter an exponent value: ");
scanf("%lf", &exponent);
// 累乗を計算
value = pow(base, exponent);
printf("%.1lf^%.1lf = %.2lf", base, exponent, value);
return 0;
}
出力結果
上記のプログラムを実行すると、次のような結果が得られます。
Enter a base value: 3.4
Enter an exponent value: 2.3
3.4^2.3 = 16.69
-
数値を英語の単語に変換するCプログラムの書き方
数値で構成された文字列が与えられたとき、その数値を英語の単語(スペル表記)へ変換するのが本記事の課題です。例えば、入力が「361」であれば、出力は「Three hundred sixty one」となるようにします。この問題を解くためには、一の位・十の位・百の位・千の位など、それぞれの数字がどの桁に位置しているのかを意識することが重要です。なお、今回紹介するコードは最大4桁、つまり0から9999までの数値に対応しています。したがって、入力は0〜9999の範囲である必要があります。例として「1,111」を考えてみましょう。各桁は以下のように対応します。千の位:1(one thousand)百の位
-
Pythonで与えられた数がd(2の累乗)の冪乗かどうかを判定する方法
ある数 n と別の値 x が与えられたとき、n が x の冪乗であるかどうかを判定します。ここで、x は必ず 2 の累乗(べき乗)であるものとします。 たとえば、入力が n = 32768、x = 32 の場合、32768 = 32^3 が成り立つため、出力は True になります。 解決のための手順 この問題は、次の手順で解くことができます。 カウンタ cnt を 0 で初期化します。 n が 0 ではなく、かつ (n AND (n - 1)) の結果が 0 である場合(つまり n 自身が 2 の累乗である場合)は、以下の処理を行います。 n > 1 の間、n を 2 で割り続け、