【发布时间】:2020-05-07 12:14:39
【问题描述】:
以下代码有错误。这相对简单,但我无法弄清楚我哪里出错了。以下是部分代码:
int target=0,nextRow;
char nextCol;
while(target == 0)
{
printf("Enter a valid target: ");
scanf("%c%d",&nextCol,&nextRow);
if(nextCol>= 'a' && nextCol <= 'z') /* convert to uppercase */
nextCol=nextCol-32;
if(nextRow>row || nextRow<1 || nextCol<'A' || (nextCol-64)>col)
target=0;
else
target=1;
}
本质上,系统会提示用户输入 char 和 int,例如B4、C8 等。 Col 和 Row 是预定义的整数。如果用户输入值超出范围,则目标保持为 0。否则目标 = 1,因此循环将退出。当我运行它并继续输入无效值时,“输入有效目标”开始重复。为什么?
【问题讨论】:
-
尝试:
scanf(" %c%d",&nextCol,&nextRow);请注意%c之前的额外空格。请参阅重复的候选人进行解释。 -
我不认为这是问题所在,@kaylum。把问题读两遍。
-
您的意思是“当我运行它并继续输入 有效 值”而不是“当我运行它并继续输入 无效值“?
-
row和col是如何定义的?
标签: c loops while-loop