手动计算回文的字符数



我目前有一个程序来检测输入的字符串是否是回文。我想避免使用 strlen 方法。

    int main ()
    {
    char string[80];
    bool Beginning;
Beginning = true;
while (Beginning)
    {
    cout << "nEnter a stringn" << endl;
        cin.getline(string, 80);
            cout << "nYou entered: ";
                printf(string, 80);
                    cout << endl;
    if('E' == string[0])  
        {
        if('N' == string [1]) 
            {
            if('D' == string[2])
                break;
            }
         }
    int len=strlen(string);   //avoid this method
    bool flag = true;
for (int c=0; string[c]; c++)
{
    if (flag)
    {
    if(string[c] != string[len-c-1])
            {
            flag = false;
            }
    }
        else
            {
            break;
            }
    }
    if (flag)
    {
        printf ("nThis is a Palindromen");
            Beginning = true;
            continue;
    }
else 
    {
    printf("nThis is not a palindromen");
        Beginning = true;
            continue;
    }
cin.get();
    }
}

我尝试过以下手动计数:

while (string[c] < '') {
c++;
int len = string[c];
}

上面搞砸了程序准确判断字符串是否是回文的能力,它会说它们都不是,或者都是。

如果我

理解正确,您需要正确的实现len

这将完成这项工作:

len =0;
while (string[++len] );

所需要的只是检查空终止(因为您使用的是 C 字符串)

建议:请不要混用C&C++!

最新更新