你能告诉我为什么这个循环一直重复而不让我阅读 n
吗?
int n;
do
{
printf("Height: ");
scanf("%d",&n);
}
while(n < 0 || n > 23);
我无法输入任何值,因为“高度:”一直在重复。这是完整的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,j,k;
do
{
printf("Height: ");
scanf("%d",&n);
}
while(n < 0 || n > 23);
for(i=0;i < n;i++)
{
for(j=0;j < n - i - 1;j++)
{
printf("%c",' ');
}
for(k=0;k < i + 2;k++)
{
printf("%c",'#');
}
printf("\n");
}
}
最佳答案
检查scanf的返回。在这种情况下,如果 scanf 成功,它将返回 1。如果它不返回 1,则输入无效,例如 www
为 int。在这种情况下,请清除缓冲区并重试。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = -1;
do {
printf ( "height \n");
if ( scanf ( "%d", &i) != 1) {// != 1 means scanf failed
while ( ( i = getchar()) != '\n' && i != EOF) {
;//clear buffer
}
i = -1;
}
} while ( i < 0 || i > 23);
return 0;
}
关于c - do-while循环不断重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512851/