在输入负数和字符是都能正确运行,重新输入,但是输入一个小数时会将后面的代码运行一遍再重新输入,推测是scanf将第一个数字已经保存?怎么解决
别用goto了。
do
{
ret = scanf("%d", &n);
if (ret != 1)
printf("输入0\n");
if (n < 0)
printf("大于0\n");
fflush(stdin);
} while (ret != 1 || n < 0);
在每一个scanf后面加一句 fflush(stdin) 试试