#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);
}
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
#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;
}
#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;
}