要求输入成功,且n不是0才继续。那么正确的代码应该是
while( scanf("%d",&n)==1 && n!=0 )
scanf的用法你自己看书,比如 scanf("%d%d",&a,&b),那么它可能返回 EOF、0、1、2。
在比赛中,争分夺秒,因为竞赛用例不可能有非预期字符,因此使用 scanf("%d",&n)!=EOF 也没问题,而且EOF一般(不是标准)为-1,那么 scanf("%d",&n)!=-1 等价于 ~scanf("%d",&n),这样写可以少打几个字。 (注,非比赛时的正常代码中写成scanf("%d",&n)!=EOF或~scanf("%d",&n)者都是大傻逼)
while( …… && n ) 等价于 while( …… && n==0 ) 不用说吧