如图,我的函数要求输入float类型参数,并用scanf返回值检测,为何第一种情况会进入死循环二第二种不会。
因为一旦一次输入错误,输入信息会一直在输入缓冲区。第二种方法中的getchar()正好消化掉了缓冲区中的信息,所以外部循环又可以正确接收输入数据了。另外第二种方法中,while循环后面不应该有分号第一种方法中,你在while语句中增加 fflush(stdin); 清空一下输入缓冲区内容,应该可以