在循环中break和continue关键字均可以使用
其中程序运行到break表示程序跳出整个循环,程序运行到continue表示程序跳过本次循环中的continue后面的循环体的内容,进行下一次循环。
1,while循环
基本语法:while(表达式)
{
循环语句
}
例如:
在这while循环中,有两个函数
getchar()函数:用于获取键盘上输入的字符,如果输入Ctrl+z相当于输入EOF
putchar()函数:用于打印字符
EOF——end of file其值为-1
有关getchar的使用:
这个程序,很多人都会认为它会正常运行,但是,它会出问题,运行起来程序将不会停下来等待你去输入Y或N,主要原因是在输入密码之后,会敲一个enter才会继续运行程序,但是这个enter又会在缓存区保存下来,而getchar()在获取键盘输入的时候会先从缓存区获取,如果有就获取(且一次获取一个),没有才会等待输入,因此这个程序直接获取enter,不是Y,直接放弃确认。
该如何解决这个问题呢?这个问题出现在缓存区有字符,关键就是将缓存区的字符清除掉
这里如果多次获取就可以解决这个问题,程序输入的最后一个要敲一个enter,因此要循环获取,直到获取到最后一个字符enter即\n 即可,用一个while循环,具体如下:
循环体内什么都不做,因此用以分号即可。
字符间比较大小,实际上是比较其所对应的ascii的大小
这段程序只能打印0—9之间ascii所对应的数字
2,for循环(用的最多)
语法:for(表达式1;表达式2;表达式3)
{循环语句}
表达式1为初始化部分,表达式2是条件判断部分,表达式3是调整部分,用于循环变量的调整。
for循环的使用:
while循环打印1-10
for循环打印1-10
for里面,i=1是循环变量的初始化,i<=10是进入循环的条件,满足则执行循环,i++是每次循环后循环变量i的变化。
注意对比下面两端代码:
先看右边这个代码,当i==5,时候跳过后面的程序,i++无法执行,再次跳到while时候,i继续为5,循环就在这里进入了死循环,再看左边这个代码,当i==5时候,循环会跳过后面的打印,但是,i++会继续执行,程序不会进入死循环,正确执行。
对于for循环的一些建议:1.不可以在for循环内修改循环变量,防止for循环失去控制
在这程序中,本意是想判断i是否等于5(i==5),但是写成了赋值(i=5),一到if判断时候,i就等于5,这个程序就会一直打印hehe,无限循环下去。
2,建议for循环中的循环变量采取前闭后开区间的写法。
如for(i=1;i<=9;i++)最好写成for(i=1;i<10;i++)这个10即指出了循环10次又指出了打印10次。
下面看几个for循环的变式:
(1)
在这些循环中省略了初始化,判断,调整部分,但是如果for循环中判断条件被省略,程序会默认判断结果恒为真,那么这个程序就进入死循环,一直打印hehe
如果不是很熟悉,就不要省略代码,不然容易出现bug。
2,多个变量循环
这个循环,只有在同时满足x<2,y<5时才可以继续循环,也就是这个循环可以走两次
下面做一个题目:
注意这个判断条件是k=0,是赋值,并且等于0,为假,所以一次也不循环
3,do...while循环
语法结构:do
{循环语句}
while(表达式)
上来就会先执行一次循环,之后判断是否满足条件,如果满足就继续循环,如果不满足就不在循环,do...while循环至少执行一次
用do...while循环打印1-10
这个循环中当i=5时,由于i++在continue后面,执行到i=5时,跳出本次循环,i一直都是5,程序进入死循环。
下面看几个循环的实例进行
1,二分法查找有序数组的元素
2,两端逼近打印
3,模拟用户登录