最近在做题的时候遇到了循环输入的问题
敲完代码提交失败,检查发现是陷入了死循环,下面来说说怎么解决吧。
C语言版:
#include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n) )//死循环,会一直运行下去
{
}
return 0;
}
这段代码是可以通过的,但是会陷入死循环。
while(~scanf("%d",&n))
while(scanf("%d",&n) != EOF)
解释:
~是按位取反
scanf的返回值是输入值的个数
如果没有输入值就是返回-1
-1按位取反结果是0
while(~scanf("%d", &n))就是当没有输入的时候退出循环
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
EOF 的值通常为 -1
C++版
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n,n)//死循环,会一直运行下去
{
}
return 0;
}
同理
while((cin>>n)!=0)//这种写法好像不行,日后再补充了