gpt4 book ai didi

c - 在不使用额外空间的情况下判断一个整数是否为回文

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:37 25 4
gpt4 key购买 nike

我编写了以下函数来查找整数是否为回文而不需要任何额外空间:

int isPalindrome(int x) 
{
int i=0,j,y,z;
if(x<0)
return 0;
for(i=0;;)
{
if((**y**=x/pow(10,i)) > 0) //Variable 'y' here
{
i++;
}
else
break;
}
printf("i=%d\n",i);

for(;i>0;)
{
if(x%10!=(**z**=x/pow(10,i-1))) //variable 'z' here
{
return 0;
}
else
{
x=x%(int)pow(10,i-1);
x=x/10;
i=i-2;
}
}
return 1;
}

这里返回1表示是回文,0表示不是。

但是我发现,当我从代码中的语句中删除变量 yz 时,代码并没有给出预期的结果。背后的原因可能是什么?

最佳答案

当变量 y 或 z 被移除时,表达式类型从 int 变为 double。

  • 表达式 'x/pow(10,i)' 的类型是 double
  • 表达式 'y = x/pow(10, i)' 的类型是 int

  • 'z = x/pow(10,i-1)' - 整数

  • 'x/pow(10,i-1)' - 双

关于c - 在不使用额外空间的情况下判断一个整数是否为回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com