前面两节我们学习了循环控制语句中的while和do…while语句。
本节将学习常规循环控制语句中的最后一种—for循环语句。
for循环相比while循环语句,虽然两个都是循环语句,但for循环在结构上要比较while稍微复杂一些。语法结构如下:
for (变量初始化; 条件; 步长)
{
//循环体语句块
}
语法结构解析
- 以关键字
for
开头,后面紧跟一对中括号 - 中括号中包含三个部分,每个部分以分号隔开
- 第一部分为变量声明和初始化,此处声明的变量(变量名可以任意命名,只要符合变量声明规则即可)将被第二部分和第三部分使用
- 第二部分为返回布尔值的条件表达式
- 第三部分为变量的步长,步长可以递增,也可以递减
- 循环体用一对花括号包裹,花括号后面不需要分号
执行过程分解
for循环执行过程分解如下图:
示例一
结合示例,分析for循环的语法结构和执行过程。
以下是一段简单的循环输出代码:
for (int i = 0; i < 10; i++)
{
Console.WriteLine("当前i的值为: {0}", i);
if(i==8)
{
Console.WriteLine("8是一个幸运数字");
}
}
运行结果如下:
当前i的值为: 0
当前i的值为: 1
当前i的值为: 2
当前i的值为: 3
当前i的值为: 4
当前i的值为: 5
当前i的值为: 6
当前i的值为: 7
当前i的值为: 8
8是一个幸运数字
当前i的值为: 9
示例二
求1到100数字的累加结果:
int sum = 0;
for (int i = 0; i <= 100; i++)
{
sum += i;
}
Console.WriteLine("累加结果为:{0}",sum);
Console.ReadLine();
运行结果如下:
累加结果为:5050
break中止循环
C#语言的for循环语句块中,如果可以使用关键字break
来强制中止循环,示例代码如下:
for (int i = 0; i < 10; i++)
{
if( i == 5 )
break;
Console.WriteLine("当前i的值为: {0}", i);
}
注意:
break
关键字后面有分号(;
)
运行结果如下:
当前i的值为: 0
当前i的值为: 1
当前i的值为: 2
当前i的值为: 3
当前i的值为: 4
continue跳过本次循环
在C#语言中,同while循环类似,for循环也提供了使用关键字continue
跳过本次循环的功能,示例代码如下:
for (int i = 0; i < 10; i++)
{
if( i == 5 )
continue;
Console.WriteLine("当前i的值为: {0}", i);
}
注意:
continue
关键字后面有分号(;
)
运行结果如下:
当前i的值为: 0
当前i的值为: 1
当前i的值为: 2
当前i的值为: 3
当前i的值为: 4
当前i的值为: 6
当前i的值为: 7
当前i的值为: 8
当前i的值为: 9
死循环示例
在C#语言的for循环语句中,声明的三个部分(变量初始化,条件,步长)都是可选的,所以,如下的示例的代码是一个死循环:
for ( ; ; )
{
Console.Write(1);
}
所以,为避免死循环,我们需要手动指定for循环的退出条件,示例如下:
int i = 0;
for(;;)
{
if (i < 10)
{
Console.WriteLine("当前i的值为: {0}", i);
i++;
}
else
break;
}
只有当
i
小于10才执行循环体中的语句,否则强制中止循环。
运行结果如下:
当前i的值为: 0
当前i的值为: 1
当前i的值为: 2
当前i的值为: 3
当前i的值为: 4
当前i的值为: 5
当前i的值为: 6
当前i的值为: 7
当前i的值为: 8
当前i的值为: 9
调整步长
在C#语言的for语句中,我们可以任意设置和调整符合规范的循环步长,比如以下示例中,我们将循环变量设置成了小数,步长也是以0.01每次增加,代码如下:
for (double d = 1.01D; d < 1.10; d+= 0.01D)
{
Console.WriteLine("当前i的值为: {0}", d);
}
运行结果如下:
当前i的值为: 1.01
当前i的值为: 1.02
当前i的值为: 1.03
当前i的值为: 1.04
当前i的值为: 1.05
当前i的值为: 1.06
当前i的值为: 1.07
当前i的值为: 1.08
当前i的值为: 1.09
递减步长
在C#语言的for循环语句中,除了可以将步长设置为递增,我们还可以将步长设置成递减模式,示例代码如下:
for(int i = 10; i > 0;i--)
{
Console.WriteLine("当前i的值为: {0}", i);
}
运行结果如下:
当前i的值为: 9
当前i的值为: 8
当前i的值为: 7
当前i的值为: 6
当前i的值为: 5
当前i的值为: 4
当前i的值为: 3
当前i的值为: 2
当前i的值为: 1
初始化多个变量
在C#语言的for循环声明变量时,还可以同时声明多个变量,如下示例中,我们同时声明了i
和j
两个变量,并且分别设置了这两个变量的不同增长方式(i
以步长等于1的值递增,j
以步长为通的值递减):
for (int i = 0, j = 10; i <= 10; i++, j--)
{
Console.WriteLine("当前 i = {0}, j = {1} ", i, j);
}
Console.ReadLine();
运行结果如下:
当前 i = 0, j = 10
当前 i = 1, j = 9
当前 i = 2, j = 8
当前 i = 3, j = 7
当前 i = 4, j = 6
当前 i = 5, j = 5
当前 i = 6, j = 4
当前 i = 7, j = 3
当前 i = 8, j = 2
当前 i = 9, j = 1
当前 i = 10, j = 0
嵌套循环
在程序开发中,有时候单层的循环并不能完全满足实际需求,比如要输出一个5行3列的表格,外层循环表示表格的行(row),内层循环表示表格的列(column)。
当外层循环(行)每递增一次时,都会重新执行内层循环(列),使用for语句的嵌套循环模拟代码如下:
for (int row = 1; row <= 5; row++)
{
for (int column = 1; column <= 3; column++)
{
Console.Write($"第{row}行第{column}列\t");
}
Console.WriteLine("");
}
运行结果如下:
第1行第1列 第1行第2列 第1行第3列
第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列 第3行第3列
第4行第1列 第4行第2列 第4行第3列
第5行第1列 第5行第2列 第5行第3列
发表评论
登录用户才能发表评论, 请 登 录 或者 注册