c - 为什么我的回文函数总是返回 1?

标签 c

我正在为我的家庭作业编写一个函数,该函数应该判断给定的字符串是否为回文。 尽管我什至用“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/

相关文章:

c++ - 具有C语言绑定(bind)的静态成员函数?

"sizeof(arr[0])"会导致未定义的行为吗?

无法将值存储在库中定义的结构上

c - 防止 gtk2 切换按钮和进度条垂直拉伸(stretch)

c - Linux 内核,const 转换函数

c - typedef 和 struct 的语法错误?

c - 内核输入/输出

c - 如何调用C预处理器?

c++ - Protobuf 声明我缺少必填字段,而我显然不是

c++ - 垂直按位计数(同一位置上的总和)