C++ 如果用户输入q,如何退出
当用户按Q键时,它不会退出程序。。怎么了?请帮忙C++ 如果用户输入q,如何退出,c++,if-statement,execute,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 =
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";
}
while(true)
{
//提示用户输入或退出
cout buf;n=atoi(buf.c_str());
忽略(1000,10);
如果(n='q'| | n=='q')
打破
a=n%10;
b=n/10000;
如果(!a==b)
{
cout如果您向该程序输入q
或q
,它将不会在atoi
中转换任何内容,n
将是0
,而不是'q'
或'q'
。但是,如果您在字符集中输入'q'
或'q'
的数值,程序将退出(113
或81
)
例如:
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
我将把进一步的调试/修复留给您。注意-您的程序没有正确地检查回文。如果您输入“q”字符,atoi函数无法将此输入解释为数字,因此返回零。
请参考此链接
最重要的是以下段落:
如果str中的第一个非空白字符序列不是有效的整数,或者由于str为空或仅包含空白字符而不存在此类序列,则不执行转换并返回零。
在这种情况下,str==buf如前面的答案所述,q将通过atoi()转换为0。因此,基本上,为了让程序通过q或q退出,请在之后使用atoi()转换
if( n == 'q' || n == 'Q')
break;
这样,当您检查程序是否应该退出时,n仍然是q或q,如果不应该退出,则使用atoi()将n转换为整数,并检查它是否是回文
希望我能帮你改变一下
if( n == 'q' || n == 'Q')
到
这将访问输入中的第一个字符,并将其与所需的字符“Q”或“Q”进行比较。,因为你在两个相同的条件下使用OR。我的解决方案的工作方式与Ed Heal的解决方案几乎相同,所以如果这有效,很好,问题解决了!非常感谢你,我可以问你另一个问题吗?我试图创建一个空心正方形,我做了,但有些东西不起作用。@OruzAysn-我回答了这个问题至少comment@OruzAysn-你也可以投票给别人和/或接受他们的答案。这样做将确保你将来更有可能得到回应。
if( buf[0] == 'q' || buf[0] == 'Q')