【发布时间】:2021-11-26 04:57:36
【问题描述】:
以下代码有什么问题?
我被困在 do while 循环中。我比较性格错了吗?我也尝试使用scanf("%c", &answer);,但结果相同
char answer[10];
for (i = 0; i < wish; i++)
{
/* ... */
/* ... */
do
{
printf(" Does this item have financing options? [y/n]:");
scanf("%s", &answer[i]);
if ((answer[i] != 'y' )|| (answer[i] != 'n'))
{
printf("\nERROR: Must be a lowercase 'y' or 'n'");
}
} while ((answer[i] != 'y') || (answer[i] != 'n'));
【问题讨论】:
-
逻辑错误。测试将永远为真。
-
也许您的意思是检查
answer[i]是否不是'y'并且 (&&) 不是'n'。 -
我很抱歉。 y 是包含“y”的变量,n 包含“n”。虽然我更新了帖子。但它仍然无法正常工作。
-
但是您正在检查它是 not
'y'还是 not'n'。考虑如果是'y'会发生什么:那么第一个条件为假,但第二部分为真,“假或真”为真。