pow () 函数的头文件:
#include <math.h>
也是其 floor () 函数的头文件
pow () 函数的函数原型:
该函数用来求 x 的 y 次幂,
其函数原型:
double pow( double x,double y);
当指数小于 1 时,
注意 / 至少要有一侧为浮点数
我们可以从中看出,
其参数 x,y 以及其函数值实际上均为 double 类型
pow () 函数的使用方法:
其函数的返回值即为 x 的 y 次幂结果,
所以通常创建一个变量用来存放其返回值
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,ret;
scanf("%d,%d", &a, &b);
ret = pow(a,b); //求出a的b次方
printf("%d", ret);
return 0;
}
pow () 函数的易错点:
在某些特定的情况之下,pow 函数的 double 类型可能回引起输出结果的错误,
出现此种错误的原因:
在向函数传参时,
违背了数学常识
即:
底数 a为负数并且指数 b 不是整数,将会导致 domain error 错误.
底数 a和指数 b都是 0,会导致 domain error 错误.
底数 a是 0,指数 b 为负数,会导致 domain error 或 pole error 错误.所以在使用pow函数时,要注意底数和指数数字的正负,不要违反基本的数学常识
例题1:
题目链接:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int end = pow(data , 1.0/3);
//注意是1.0,这样能保证1.0/3的结果不为0,从而不违背数学常识
/*因为pow函数的返回类型是double,而题目要求最后输出的是整型
所以要创建一个 int 型的变量来存放*/
printf("%3d",end);
/*printf("%3d",pow(data , 1.0/3));
该种写法错误,
因为pow函数的返回值没有被保存,
出了其函数作用域后就被销毁了,
所以这样写的结果便是得到了随机值*/
return 0;
}
例题 2 :
题目链接:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
double sum = 0;
int sign = 1;
for(int i = 1;i <= data;i++)
{
sum = sum + sign*pow(i,1.0/2);
//注意运算符 / 至少要有一侧为浮点数
sign = sign * (-1);
}
printf("%.6lf",sum);
return 0;
}