0

ユーザーが Q を押しても、プログラムは終了しません。何が問題なのですか?? 助けてください

while (true)
{
//promt to user enter or quit
cout<<" Enter five digit number please or Q to quit \n";
cin>> buf; n = atoi (buf.c_str());
cin.ignore(1000,10);

if( n == 'q' || n == 'Q')
    break;

a = n % 10;
b = n / 10000;

if ( ! a == b )
    {
    cout<< "This is not a palindrome \n";
    continue;
    }
// checking the palindrome
n = n % 10;
n = n / 100;

if ( a == b )
    cout<<" This is palindrome\n";
else
    cout<<" This is not a palindrome\n";

}
4

4 に答える 4

1

「q」文字を入力すると、atoi 関数はこの入力を数値として解釈できないため、ゼロが返されます。このリンクを参照してください

http://www.cplusplus.com/reference/cstdlib/atoi/

最も重要なのは次の段落です。

str 内の非空白文字の最初のシーケンスが有効な整数でない場合、または str が空であるか、空白文字のみが含まれているためにそのようなシーケンスが存在しない場合、変換は実行されず、0 が返されます。

この場合、str == buf

于 2013-08-27T21:00:56.353 に答える