#include<stdio.h>
#include<windows.h>
int main()
{
int x,y;
do{
system("cls");
printf("输入一个数字");
y=scanf("%d",&x);
if(y==1)
break;
// else
// scanf("%c",&x);
}while(1);
return 0;
}
#include<stdio.h>
#include<windows.h>
int main()
{
int x,y;
do{
system("cls");
printf("输入一个数字");
y=scanf("%d",&x);
if(y==1)
break;
// else
// scanf("%c",&x);
}while(1);
return 0;
}
当scanf输入整数时,如果你输入一个字符就回车,那么y就是0。不会跳出程序,但输入缓冲区中这个字符会一直存在,没有接收者,下一个循环会自动读缓冲区中的内容,导致无限循环发生。你else的话就会通过%c读取掉字符,从而可以接收后续输入的数字。