十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
pow()函数用来求x的y次幂,x、y及函数值都是double型 ,其原型为:double pow(double x, double y)。
成都创新互联公司主营昂昂溪网站建设的网络公司,主营网站建设方案,重庆APP开发公司,昂昂溪h5小程序制作搭建,昂昂溪网站营销推广欢迎昂昂溪等地区企业咨询
实例代码如下:
#includestdio.h
#includemath.h
void main()
{
double x = 2, y = 10;
printf("%f\n",pow(x, y));
return 0;
}
扩展资料:
在调用pow函数时,可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error?错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致?domain error 或pole error 错误,也可能没有;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致range error 错误。
错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为 EDOM;
如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。
参考资料:
pow函数——百度百科
C语言中除了使用函数pow实现乘方运算,没有其他的运算符号可以用来直接表示乘方,就算自己实现也只能是以函数的形式体现出来。
1、C语言中计算一个数的N次方可以用库函数pow来实现,还可以直接使用2^3就可以算出结果。pow函数原型:double pow(double x,double y)。其中x值是底数,y值是幂。
举例:
double a=pow(3.14,2)计算3.14的平方。
注意:使用pow函数时,需要将头文件#includemath.h包含进源文件中。
2、在C语言中,10的n次方可以表示为pow(10,n)。其中pow函数在头文件math.h中,所以调用该函数的时候,必须将math.h加进来,即#includemath.h。
原型:extern float pow(float x,float y)
功能:计算x的y次幂。
说明:x应大于零,返回幂指数的结果。
C语言的应用:
1、操作系统,C语言最著名的应用领域就是操作系统了,目前所有的操作系统内核都是C语言写的,最著名的就是Unix和Linux了。
2、单片机,由于C语言在位操作上的优越性,在单片机领域,C语言也一直独领风骚,虽然现在出现了一些用其他编程语言操作单片机的方法,但也都是用C语言封装过的,可以说核心还是C语言。
3、驱动程序,无论是操作系统或者单片机,对硬件的驱动除了汇编(比较繁琐),都是用C语言来编写。
4、编译器或解释器,由于C语言效率高的特点,很多编译器也选择的使用C语言来开发。
5、系统服务,由于操作系统都提供了C语言的API,并且C语言的执行效率比较高,所以用C语言来写系统服务是最适合不过的。
6、应用软件,由于C语言没有成熟的开发框架,所以不适合开发大型应用程序。但也有一些对效率要求比较高的程序使用C语言开发,如Git。
在C语言中, M的N次方,可以有如下几种表示方法:
1、使用标准库函数的pow。形式为
pow(M,N);
使用pow函数需要引用头文件math.h, pow的参数和返回值类型都是double的,所以得到的是近似值。
2、对于要得到精确值的,在C语言中并没有系统函数供使用,只能自己写函数来实现,参考代码如下:
int pow_int(int m, int n)
{
int r=1,i;
for(i = 0; i n; i ++)//循环执行n次。
r*=m;//每次乘一次m,结果即m的n次方。
return r;//返回结果。
}
使用这种方式,要注意溢出,尤其是当n比较大的时候,很容易出现超出变量表示范围,导致溢出出现。
你的代码逻辑是从高位开始取,然后乘10再累加。想法可以,但代码有错,1:for语句的条件部分不要用逗号,那是逗号表达式,只有最右边的m=0起作用。2:pow函数原型是double型,你要的是整型,中间发生强转型,会有误差,比如你输入“100000”。
最简单方法,自己写一个pow函数取代库函数。
下面完全按照你代码改的:
#includestdio.h
#includemath.h
#includestring.h
long pow2(int n,int m)
{
int i;
long sum=1;
for(i=0;im;i++)
sum*=n;
return sum;
}
long fun(char *s)
{
int i,n,m;
long sum=0;
n=strlen(s);
m=n-1;
for(i=0;inm=0;i++,m--)
sum+=(s[i]-'0')*pow2(10,m);
return sum;
}
int main()
{
printf("字符串“2345210”转换成数值=%ld\n",fun("2345210"));
printf("字符串“10000000”转换成数值=%ld\n",fun("10000000"));
return 0;
}
用for语句:
#include stdio.h
void main()
{
int i,n;float x,s=1;
scanf("%f%d",x,n);
for(i=1;i=n;i++)
s*=x;
printf("计算结果: %f",s);
}
用while语句:
#include stdio.h
void main()
{
int i,n;float x,s=1;
scanf("%f%d",x,n);
while(i=n)
{s*=x;i++;}
printf("计算结果: %f",s);
}
用do-while语句:
#include stdio.h
void main()
{
int i,n;float x,s=1;
scanf("%f%d",x,n);
do{s*=x;i++;}
while(i=n);
printf("计算结果: %f",s);
}