0

我有以下代码:

int main ()
    {
    char string[80];
    bool Restart;

Restart = true;

while (Restart)
    {
    cout << "Enter a string\n" << endl;
    cin.getline(string, 80);
    cout << "\nYou entered: ";
    printf(string, 80);
    cout << endl;

    int len=strlen(string);

    bool flag = true;

    for (int c=0; c!=len/2; c++)
        {
        if (flag)
            {
            if(string[c] != string[len-c-1])
                {
                flag = false;
                }
            }
            else
                {
                break;
                }
            }

if (flag)
    {
    cout <<"\nThis is a Palindrome\n" << endl;
    Restart = true;
    continue;
    }
else 
    {
    cout << "\nThis is not a palindrome\n" << endl;
    Restart = true;
    continue;
    }
cin.get();

    }
    }

我需要找出一种方法来检查用户输入的内容是否全部大写为“END”,如果是,则退出程序。我确定我可以处理退出的部分,但是我无法获得一些东西来检查输入的字符串是否全部大写为“END”。

4

2 回答 2

0

如果输入“END”,这是一个将终止 while 循环的解决方案。创建一个辅助方法来解析END. 请注意,这是非常具体的问题,不是很可重用。与 Beta 的解决方案不同,它也更难维护,但在您开始编写更大的程序之前,您无需担心维护。

bool Terminate(char* string, int len)
{
    bool retval = false;
    char* c = string;

    if( 3 == len )  // "END\0"
    {
        if('E' == string[0])  
        {
            if('N' == string [1]) 
            {
                if('D' == string[2])
                {
                    retval = true;
                }
            }
        }
    }

    return retval;
}

然后int len=strlen(string);像这样使用它:

if(Terminate(string, len))
{
    break;  // Exit while loop
}

确保Terminate在您的主要功能之前声明

于 2013-09-17T22:50:31.587 回答
0

这足以暗示吗?

#include <iostream>

int main()
{
  char A[] = "END";
  char B[10];

  std::cin >> B;

  std::cout << strcmp(A,B) << std::endl;

  return(0);
}
于 2013-09-17T22:51:00.153 回答