用c语言给出实现代码:循环输入整数( 若输入了小数出现死循环,该如何处理)
时间: 2023-06-23 15:07:57 浏览: 157
c语言版 求解循环小数的算法
3星 · 编辑精心推荐
以下是一个循环输入整数的示例代码,同时也包含了处理输入小数的代码:
```c
#include <stdio.h>
int main() {
int num;
while (1) {
printf("请输入一个整数:");
if (scanf("%d", &num) != 1) { // 如果输入的不是整数,会返回0,此时需要清空输入缓冲区
scanf("%*s"); // %*s 表示读取一个字符串但是不存储
printf("输入了非整数,请重新输入!\n");
continue;
}
printf("您输入的整数是:%d\n", num);
// 这里可以进行其他操作
}
return 0;
}
```
在输入小数时,scanf 函数会读取小数点前后的数字,但是只会将整数部分存入 num 变量中,小数部分会留在输入缓冲区中。由于缓冲区中仍然有小数部分的内容,所以每次循环开始时,scanf 函数会再次读取到小数点前面的数字,因此会导致死循环。为了解决这个问题,我们需要在输入小数时清空输入缓冲区,让缓冲区中的小数部分被丢弃。具体方法是使用 %*s 格式控制符读取一个字符串,但是不存储它。这样就可以清空输入缓冲区了。
阅读全文