咱们这节课讲控制语句continue,以它来和break做区分。
break中,我们家上一个条件,进入break提前终止循环 ,类似道理,把break换成continue,在循环当中如果条件不成立,跳过语句2,继续循环,所以说这个continue只是结束了一次循环。它会接着下一次判断的。而break是彻底的循环结束。总结:continue结束本次循环,接着判断下一次是否执行循环,而break终止当下整个循环。
练习:打印1-100的所有数,其中能遇到被三整除的数不打印。
我们前面写了一个练习,打印1-100的数,遇到能被3整除的数停止打印。现在这里呢是把这个数跳过,别的数正常打,这就用continue。
我们可以对比break的时候,break打到2就结束了。下面我们继续来看一个练习。
练习:
输入一个整数n,判断它是不是一个素数,若用户输入的不是整数,重新输入。
可以看到我们的输出结果。while是一个死循环,如果改为while(0)就不执行循环了。当输入任意字符while就会进入一个持续不断的死循环。为了解决这个问题。
scanf返回值代表成功输入变量的个数,如果你输入字母,返回值就是0,如果是这种情况,重新输入,就是今天讲的continue 当你输入字母它下次scanf返回的还是这个字母,没办法给到n,所以加上这个continue,还是不能解决我们死循环这个问题。问题就在你输入字母在缓冲区当中,对于输入是有缓冲区的,我本来需要取走一个整数,但是这个字母一直站着这个缓冲区,每次取都会导致死循环,像这种情况很好说,就把这个无关的东西拿走。调一个getchar()就完事了。
这样就解决啦!scanf返回值输入的数据与你指定的格式不匹配就会返回0。