我在计算C语言中整数的幂时遇到问题。
我必须将数组值转换为等效的整数,即{5,3,0,5,3}到53053
我有以下代码
int repsEqual(int a[], int len, int n)
{
int temp = 0;
int i = 0;
for(i; i < len;i++)
{
temp = temp + a[i] * pow(10, (len - (i+1)));
}
if(temp == n) {
return 1;
}
else {
return 0;
}
}
始终返回0.由于电源输出错误。 {5,3,0,5,3}返回53052。
请帮帮我们
答案 0 :(得分:2)
您正在混合浮点和整数运算,因此会遇到舍入问题。无需调用pow
,这是一个浮点库函数,并且不需要为此分配进行过度杀伤。使用整数算术的更简单的实现是:
int repsEqual(int a[], int len, int n)
{
int temp = 0;
for (int i = 0; i < len; i++)
{
temp = temp * 10 + a[i];
}
return (temp == n);
}