
C语言中的数学函数:pow原型:在TC20中原型为extern
float
pow(float
x,
float
y);
,而在VC60中原型为double
pow(
double
x,
double
y
);
头文件:mathh
功能:计算x的y次幂。
返回值:x应大于零,返回幂指数的结果。
返回类型:double型,int,float会给与警告!
举例1:(在VC60中运行通过)
#include
<mathh>
#include
<stdioh>
int
main(void)
{
double
x
=
20,
y
=
30;
printf("%lf
raised
to
%lf
is
%lf\n",
x,
y,
pow(x,
y));
return
0;
}
程序对pow函数的使用有误。pow函数参数类型是double型,而不是int型。对于int型变量,使用时要强制改为double型。
if(x==pow(a,3)+pow(b,3)+pow(c,3))
改为
if(x==pow((double)a,3)+pow((double)b,3)+pow((double)c,3))
即a、b、c前都加(double)
不是POW函数问题而是
在优先级的处理上出问题了,对于两处优先级处理上应做如下修改:
#include<stdioh>
#include<mathh>
int
main()
{
int
t=1,i=0,w,d,f;
int
a[20];
long
int
m;
printf("please
input
a
mumber:");
scanf("%ld",&m);
for
(t=1,i=0;t>=0;t++,i++)
{
f=m/((int)pow(100,(double)t));//此处优先级有问题,此为参考调整
d=(int)(((m%((int)pow(100,(double)t)))/pow(100,(double)(t-1))));
//上面这条语句也有优先级问题,此为参考调整,
if
(f>=1)
a[i]=d;
else
{
w=t;
a[i]=d;
break;}
}
printf("this
number
is
%d
wei
nuber\n",w);
for
(
i=0;i<t;i++)
{
printf("di
%d
shu
is
%d\n",i+1,a[i]);
}
printf("qi
ni
xu
shu
is\n");
for
(
i=0;i<t;i++)
printf("%d",a[i]);
}
调整运行后没有问题…………
pow 函数是 double 型。是否你的编译器引入了误差。你只是处理4位数,你可以自己写 my_pow(int x):
int my_pow(int x){
int i,v=1;
if (x==0)return 1;
for (i=1;i<=x;i++) v=v10;
return v;
}
-------------
调用:
int guess,i,temp,p;
scanf("%d",&guess);
for (i=3;i>=0;i--){
temp=guess/my_pow(i);
p =tempmy_pow(i);
guess = guess-p;
}
不会引入误差。
以上就是关于c语言中的幂函数pow用法 谁能帮我用pow编个程序求3.5的1/4次方全部的内容,包括:c语言中的幂函数pow用法 谁能帮我用pow编个程序求3.5的1/4次方、C语言,如何防止pow(,)函数重载,下面这个程序如何改、一个C 语言问题pow函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)