我正在为刽子手写一个客观的c程序。我需要复制另一个给我的程序。我已经完成了大部分工作,但我遇到了问题。它必须完全复制另一个程序,所以我进入另一个程序并在字长中输入一个字符。它提出了“数字必须在3到14(含)之间”的声明,并要求我再次输入一个数字,但它开始无限循环。当我输入一个低于3且大于14的数字(出现错误并要求另一个输入)时,它会工作但是带有一个无限循环的字母。有任何想法吗??? 感谢
while (i == 0){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (number > 3 && number < 14) {
continue;
}
else printf("number must be between 3 and 14 (inclusive)");
}
答案 0 :(得分:2)
您正在检查number
但似乎必须检查wordLength
变量,并且(正如@Narkha所指出的那样)使用break
代替continue
退出循环
答案 1 :(得分:1)
while (i == 0)
保持在值i
, 0
就会循环播放。我没有在代码中的任何地方看到i
被修改,因此可能存在错误。
编辑:Alter Mann的答案更好。
答案 2 :(得分:0)
循环继续,因为你永远不会改变i
而i = 0
是正确的; continue
使代码跳转到循环condicion,没有结束循环。另外,正如@AlterMann评论,你没有检查wordLength,我建议这个
bool continueLoop = true;
while (continueLoop ){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (wordLength > 3 && wordLength < 14) {
continueLoop = false;
}
else {
printf("number must be between 3 and 14 (inclusive)");
}
}
或者可以使用break
并结束没有标志的循环
while (true){
printf("\n\n > Please enter a word length: ");
scanf("%i", &wordLength);
printf("\n\n");
if (wordLength > 3 && wordLength < 14) {
break;
}
else {
printf("number must be between 3 and 14 (inclusive)");
}
}
答案 3 :(得分:0)
在scanf()之后使用getchar()以避免标准输入中留换行符。
while (i == 0){
printf("\n\n > Please enter a word length: ");
scanf("%d", &wordLength);
getchar();
printf("\n\n");
if (number > 3 && number < 14) {
break;
}
else printf("number must be between 3 and 14 (inclusive)");
}