如果用户输入q,如何退出

时间:2013-08-27 20:46:40

标签: c++ if-statement execute

当用户按下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 个答案:

答案 0 :(得分:1)

如果输入'q'字符,atoi函数不能将此输入解释为数字,因此返回零。 请参阅此链接

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

最重要的是以下段落:

如果str中的第一个非空白字符序列不是有效的整数,或者由于str是空的或者只包含空格字符而不存在这样的序列,则不执行转换并返回零

在这种情况下str == buf

答案 1 :(得分:0)

如果您为此计划输入qQ,则不会转换atoi中的任何内容,n0,{} {1}}或'q'。如果您在字符集中输入'Q''q'的数值,但<(1>}或'Q'分别为11381,则程序退出

示例:

 Enter five digit number please or Q to quit 
12345
 This is not a palindrome
 Enter five digit number please or Q to quit 
12321
 This is palindrome
 Enter five digit number please or Q to quit 
q
 This is palindrome
 Enter five digit number please or Q to quit 
113 

我会给你进一步的调试/修复。注意 - 您的程序没有正确检查回文。

答案 2 :(得分:0)

如前面的答案中所述,q将通过atoi()转换为0。所以,基本上,为了让程序以q或Q退出,请在

之后使用atoi()转换。
if( n == 'q' || n == 'Q')
     break;

这样,当你检查程序是否应该退出时,n仍然是q或Q,如果没有,你将n转换为带有atoi()的整数,并检查它是否是回文。

希望我能帮忙

答案 3 :(得分:0)

尝试更改

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

if( buf[0] == 'q' || buf[0] == 'Q')

这将访问输入中的第一个字符,并将其与所需字符'Q'或'q'进行比较