本文目录一览:
- 1、C语言pow函数
- 2、C语言pow函数取整问题求大神解答。
- 3、c语言中的pow()函数怎么用
- 4、c语言:pow函数出现奇异现象,求助高人!
- 5、求教C语言大神,这个程序里的pow()函数的用法错了吗?
C语言pow函数
#includestdio.h
#includeiostream
#includemath.h
#includestring.h
using namespace std;
#define N 10
int function(char a[])
{
int i,c,sum=0;
int b[N];
c=strlen(a);
for(i=0;ic;i++)
{
if('A'=a[i]a[i]='E')
b[i]=a[i]-55;
else if('a'=a[i]a[i]='e')
b[i]=a[i]-87;
else
b[i]=a[i]-48;//因为char类型的数字0对应十进制的48,这下你就懂了吧!!!
}
coutendl;
for(i=0;ic;i++)
sum=int(sum+b[i]*pow(16,c-1-i));
return sum;
}
main()
{
char a[N];
printf("Please input a string:\n");
gets(a);
printf("%d\n",function(a));
return 0;
}
你可以试一下子,我已经再改的地方做了注释,而且,必须将char类型数字改成int型的数字,否则会产生不确定的错误!!!希望满意,给分啊亲!
C语言pow函数取整问题求大神解答。
(int)强制转成整型,如果是小数就只取整数部分。
可能有的编译器会把100保存成99.999999吧,我推测,这样只会取99,不精确。
改进办法是改成(int)(pow(10,i)+0.01).
c语言中的pow()函数怎么用
pow()函数用来求x的y次幂,x、y及函数值都是double型 ,其原型为:double pow(double x, double y)。
实例代码如下:
#includestdio.h
#includemath.h
void main()
{
double x = 2, y = 10;
printf("%f\n",pow(x, y));
return 0;
}
扩展资料:
C++提供以下几种pow函数的重载形式:
double pow(double X,int Y);
float pow(float X,float Y);
float pow(float X,int Y);
long double pow(long double X,long double Y);
long double pow(long double X,int Y);
使用的时候应合理设置参数类型,避免有多个“pow”实例与参数列表相匹配的情况。
其中较容易发生重载的是使用形如:
int X,Y;
int num=pow(X,Y);
这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。
可以使用强制类型转换解决这个问题:num=pow((float)X,Y)。
参考资料来源:百度百科-POW
c语言:pow函数出现奇异现象,求助高人!
pow函数是返回实数值的函数。
原则上说,凡是返回实数值的运算,都不保证绝对没有误差,而只是保证误差充分小。例如:相随误差的绝对值小于2的若干次方分之一,等等。
在常见的C系统中,double型的存储形式本身,只能保证分辨精度不劣于2的54次方分之一。再考虑多步计算的误差积累,有可能误差比这还大一些。
故十的二次方,得到99.999999999999……,不能算它错,因为还在误差范围以内。
用int()来强制类型转换取整,是一种只舍不入的“取整”。而99.999999……,只舍不入的“取整”得到99是很正常的。只要改用“四舍五入”取整的方式,就没有这个问题了。
如果想实现“四舍五入”的取整,可以用int(…… + 0.5),不过这种方法只适用于知道其大于零的条件下。如果有正有负的情况,就需要分情况处理。不详述了。
还有一种“四舍五入”取整输出的办法是:不做类型转换,而直接利用printf函数本身具有的舍入功能。具体是:
printf("%3.0lf\n",pow(10.0,n));
即可。
求教C语言大神,这个程序里的pow()函数的用法错了吗?
pow函数的返回值是double类型的,而你定义的j是整型的,这样会强制进行转换,把double转换为int,数据就不精确了。