将一个数提高到幂的 C + + 函数是什么?

如何将一个数提高到幂?

2^1


2^2


2^3

等等。

649908 次浏览

Pow ()在 cath 库中。更多信息 给你。 不要忘记将 #include<cmath>放在文件的顶部。

使用 pow (x,y)函数: 看这里

只要加上数学,就搞定了。

<math.h>里是 Pow 或 Pow

没有像 VisualBasic 或 Python 中那样的特殊中缀运算符

pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

你原来的问题题目有误导性。仅仅使用 正方形,使用 2*2

你应该能够在数学中使用普通的 C 方法。

#include <cmath>

pow(2,3)

如果你在一个 Unix 系统上,man cmath

你是想问这个吗?

Sujal

虽然 pow( base, exp )是一个很好的建议,但要注意它通常在浮点运算中工作。

这可能是您想要的,也可能不是您想要的: 在某些系统上,对于整数类型,在累加器上进行简单的循环乘法会更快。

特别是对于平方,您可以自己将这些数字相乘,浮点数或整数; 这并不会降低可读性(IMHO) ,而且可以避免函数调用的性能开销。

<cmath>报头中的 std::pow有以下过载:

pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);

现在你不能

pow(2, N)

因为它不知道应该采用 floatdouble还是 long double版本中的哪个版本,所以 N 是整型数,这样会得到一个歧义性错误。所有三个都需要从 int 到浮点数的转换,而且所有三个都同样昂贵!

因此,一定要输入第一个参数,这样它才能完美地匹配这三个参数中的一个。我通常使用 double

pow(2.0, N)

又是我律师的废话。我自己也经常掉进这个陷阱,所以我要警告你。

#include <iostream>
#include <conio.h>


using namespace std;


double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)


void main()
{
double x; //initializing the variable x and i
int i;
cout<<"please enter the number";
cin>>x;
cout<<"plese enter the integer power that you want this number raised to";
cin>>i;
cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}

//该函数的定义 raseToPower

double raiseToPow(double x, int power)
{
double result;
int i;
result =1.0;
for (i=1, i<=power;i++)
{
result = result*x;
}
return(result);
}

在 C + + 中,“ ^”运算符是一个按位的 XOR。它不适用于提升到一个权力。X < n 是二进制数的左移,相当于 x 乘以2 n 次,只能在将2提高为幂时使用,而不能用于其他整数。POW 函数是一个通用的数学函数。

我没有足够的声誉来评论,但如果你喜欢与 QT 工作,他们有自己的版本。

    #include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.

或者,如果你不使用 QT,cath 基本上有同样的东西。

    #include <cmath>
double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
pow(x, y); //Should return this: 78125
int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
if (ow > 1)
{
i = i * power (i, ow - 1);
}
return i;
}


cout << power(6,7); //you can enter variables here

请注意,使用 pow(x,y)的效率比使用 x*x*x y 的效率低,如下所示,并在此回答 https://stackoverflow.com/a/2940800/319728

所以如果你想提高效率,可以使用 x*x*x

我使用的库 cmathmath.h,以便利用的 pow()库函数,照顾的权力

#include<iostream>
#include<cmath>


int main()
{
double number,power, result;
cout<<"\nEnter the number to raise to power: ";
cin>>number;
cout<<"\nEnter the power to raise to: ";
cin>>power;


result = pow(number,power);


cout<<"\n"<< number <<"^"<< power<<" = "<< result;


return 0;
}

许多答案建议使用 pow()或类似的替代品或自己的实现。但是,给出问题中的例子(2^12^22^3) ,我会猜测您是否只需要将 2提高到一个整数幂。如果是这种情况,我会建议你使用 1 << n2^n

如果你只想处理 基 _ 2,那么我建议使用左移操作符 < em > < < 而不是 数学图书馆

示例代码:

int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}

样本输出:

1   2   4   8   16  32  64  128  256  512  1024  2048  4096  8192  16384  32768

那就先加 #include <cmath> 您可以在代码中使用 pow方法,例如:

pow(3.5, 3);

其中 3.5基地< em > 3 < em > exp

使用 pow ()函数在 cmath,tgmath 或者 math.h 库中。

#include <iostream>
#include <cmath>
using namespace std;


int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b


return 0;
}

请注意,如果您将 power 输入作为 long double 以外的任何数据类型,那么答案将被提升为 double。也就是输入和输出都是双倍的。对于长双输入,返回类型是长双输入。用于将答案改为 int 使用, Int c = (int) pow (a,b)

但是,请记住,对于某些数字,这可能会导致数字小于正确答案。例如,您必须计算5 ^ 2,然后在某些编译器上可以返回24.9999999999。将数据类型改为 int 时,正确答案将是24而不是25。那就这么做

int c=(int)(pow(a,b)+0.5)

现在,你的答案将是正确的。 而且,对于非常大的数据,在将数据类型 double 改为 long long int 时会丢失数据。 比如你写的

long long int c=(long long int)(pow(a,b)+0.5);

给出输入 a = 3和 b = 38 然后得到的结果是1350851717672992000,而正确答案是1350851717672992089,这是因为 pow ()函数返回1.35085 e + 18,它被提升为 int 为1350851717672992000。我建议为这样的场景编写一个自定义幂函数,比如:-

long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}


return q;
}

然后随时给它打电话,

int main()
{
long long int a,b;
cin >> a >> b;


long long int c=__pow(a,b);
cout << c << endl;


return 0;
}

对于大于 long long int 范围的数字,可以使用升级库或字符串。