一、简介
循环结构是结构化程序3种基本结构之一,和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。
【顺序结构就是程序从第一行开始逐一执行,需要选择结构就分叉,遇到循环结构就循环。直到跳出循环,继续按顺序执行。】
二、常见的循环有五种
1.while语句
2.do。。。while
3.for语句
4.foreach语句
5.goto语句,但不建议使用。因为流程无规律,可读性差,有可能导致程序无法预知。
三、while语句
作用是判断一个条件表达式,以便决定是否进入和执行循环体。
当满足该条件时进行循环,不满足条件时,则不再执行循环。
表达式:
while(表达式){
语句块(又称循环体)
}
1.首先使用关键字while,然后执行表达式里的式子,如果为true,就执行语句块里的东西,并且再跟while后的表达式里进行比较,如果为true,就继续循环,如果是false,就跳出循环。
2.例,示例代码
1+2+3+4+5+6+。。。+99+100的结果是?
while(i<=100)//循环语句
四、do。。。while语句
1.与while语句相似,但考虑的问题的角度不同。
while语句,先判断条件是否为真,如果为真后进入循环。
do。。。while语句,先执行一次循环体代码,然后在进行判断。
2.表达形式为:
do{
语句块(循环体)
}while(表达式);
3.流程图
4.示例代码
不断重复“输入一个0-10之间的数,并输出”
5.示例
求1~100的和
感觉就是这个模式,没什么好说的。只有跟其他顺序结构和选择结构搭配,才能有所效果吧?
【注意】
do。。。while的while(表达式);后面是有分号结尾的!!!
while(表达式){} 后面是没有分号的!!!
五、for语句
for语句的使用频率,远远大于while语句。使用起来不仅灵活,还能代替while语句。
表达式:
for(表达式1声明变量;表达式2判断变量;表达式3改变变量){
语句块,满足就执行,不满足就跳出循环。
}
流程图:
其中,当表达式2的值为假时,则直接跳出循环。
表达式1:一般情况下用于给循环变量赋初始值。
表达式2:返回值必须是布尔值,作为循环是否继续执行条件。
表达式3:一般情况下用于给循环变量增值或减值。
1.例,示例代码
同样是0~100的和,用for语句实现
2.例,上述代码进行变形
3.例,继续变形,查看变化
4.例,再变形,查看变化
值得注意的是,表达式是从左往右按照顺序执行,所有把for循环修改成这样后,结果就变成5150了。
i++,sum+=i //只是换个位置,就会把100也加进入
由于先执行i++,后执行sum+=i,这里的i就不是前面的i,而是i++后的i;
六、循环的嵌套
一个循环体内又包含另一个完整的循环,称为循环的嵌套。
内嵌的循环体还可以嵌套循环,这就是多层循环。
3种循环可以互相嵌套。如(while循环、do...while循环,for循环)
1.例,打印一个用“*”号的9*6矩阵。(这算是最经典的案例了吧!)
由于这里采用的是Windows应用窗口打印的方式,所有需要创建应用窗体。
1)创建Windows应用窗口。
2)把窗体Form1命名(Name属性)为MainForm,Text属性为“星号矩阵”。
3)放置一个Button按钮控件,Name属性:btnPlay;Text属性:“打印矩阵”。
4)放置一个TextBox控件,Name属性:txtMatrix,Multiline属性:true;调整适当的高度。
5)双击按钮控件,输入代码
运行结果
2.例,沿用上述框架,修改代码,打印直角三角型
3.例,打印正三角型
运行后
for(int i = 0; i < row; i++) //表示整体行数,row自定义
for(int j = i; j
j=i,表示在第一行时,j从0开始,输出row-1个空格;
在第二行时,j从1开始,输出row-1个空格;
也就是没循环一次,就少一个空格。
for(int k = 0; k <= i; k++){s += "* ";}
在第一行时,k=0,k<=1,k++,表示输出1个*号;
在第二行时,k=0,k<=2,k++,表示输出2个*号;
也就是在上面的“空格”后面,按行数追加*号个数。
七、foreach语句
一种新的循环类型,用于访问集合里的每个元素。
表达形式:
foreach(类型 标识符 in 表达式){
语句块
}
1.例,逐个输出字符串的字符
结果为 a-b-c-d-e-
2.例,如果把“char”换成“int”
97-98-99-100-101-
因为字符可以隐式转换为int类型,所有可以这么做。但换成其他类型,如bool类型,就会报错。
3.例,使用for循环达成上述效果
s.Length为字符串s的长度。
建议,使用foreach语句时,尽量不要使用for语句。
这是因为foreach语句的运行速度大多数时候比for语句快。
八、break语句
也就是中断语句,跳出循环。
一般使用在while,do...while,for,foreach和switch语句。
1.例,在键盘中输入0~9之间的数。
break跳出的是,当前的循环体,而不是整个程序
在嵌套循环中,braek语句只能跳出离自己最近的那一层循环。
九、continue语句
作用结束本次循环,接着执行下一个循环。并不像break那样,彻底结束整个循环体。
1.例,把10~20中的不能被3整除的数输出出来。
结果运行为:10 11 13 14 16 17 19 20