我正在为我的家庭作业编写一个函数,该函数应该判断给定的字符串是否为回文。 尽管我什至用“otto”这个词在纸上试过,但我的程序总是返回 1。 虽然这是一个很常见的问题,但我真的很想知道我做错了什么,而不是仅仅从这里复制解决方案。
int is_palindrom(const char* palin)
{
int size = strlen(palin), i=0;
for (i=0;i<=(size/2); ++i)
{
if(palin[i] != palin[(size - i -1)])
{
return 1;
}
}
return 0;
}
最佳答案
您的代码是正确的,但是请注意您可能有一个反转的逻辑表达式。如果 不 相等,则返回 1
,如果相等,则返回 0
。这意味着您的函数的工作方式与“标准”C 函数相反,其中 1
的计算结果为 true
。
显然,您可以自由使用您喜欢的任何值来表示您想要的任何值。但是,如果其他人正在阅读您的代码,这很容易导致混淆。如果 bool
可用,您应该使用它;否则,您应该始终假设 1
为真,0
为假。
此外,请务必注意 is_palindrome
采用的是 string 而不是整数。
即您必须将其称为 is_palindrome("767")
而不是 is_palindrome(767)
关于c - 为什么我的回文函数总是返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480462/