while(scanf("%d",&n),n),while(scanf("%d",&n)!=EOF),while(scanf("%d",&n)==1)和while(~scanf("%d",&n))

算法题目中经常会用到几个while语句,能够同时输入和判断,比较好用

1、while(scanf("%d",&n),n)
功能:当n为0时中止循环

这里要先说一下逗号表达式:逗号表达式的值是逗号后面的那个数。例如x=(5,6),则x=6。

while(scanf("%d",&n),n)括号里的语句其实就是个逗号表达式,它的返回值是n的值,所以这个语句就相当于while(n),n=0时跳出循环,写成这样是为了输入。

如果是while(scanf("%d%d",&n,&m,),n,m),那么就相当于while(m)。

2、while(scanf("%d",&n)!=EOF)和while(~scanf("%d",&n))
功能:当读到文件结尾时中止循环

scanf语句的返回值为成功赋值的个数,例如scanf("%d %d",&a,&b),如果a、b均赋值成功返回值为2,只是a赋值成功返回1,a、b都不成功返回0,出错的时候返回EOF。

~是按位取反,scanf语句如果没有输入值就是返回-1,按位取反结果为0。

注意:这两种方法在输入字母的时候会变成死循环,而scanf("%d %d",&a,&b)==2不会。windows下可通过按“Ctrl +Z”、linux下可通过“Ctrl + D”来来达到“输入”文件结束符的效果,结束循环。

3、while(scanf("%d",&n)==1)
功能:赋值失败,跳出循环

这个应该很好理解了吧,如果是scanf("%d%d",&n,&m就是while(scanf("%d %d",&a,&b)==2)

  • 12
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值