首页 > 编程笔记 > C#笔记 阅读:8

C# for循环语句的用法(非常详细)

假设现在要求读者设计一个从 1 加到 10 的程序,然后打印结果,读者可能用下列方式设计这个程序。
int sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;
Console.WriteLine($"总和 = {sum}");
执行结果为:

总和 = 55

现在假设要求各位从 1 加至 100 或是 1000,若是仍用上面方法设计程序,就显得很麻烦了,幸好 C# 语言为我们提供了解决这类问题的方式,可以借助 for 循环语句。

for循环(loop)的语法如下:
for (表达式 1; 表达式 2; 表达式 3)
{
    循环主体
}
上述各表达式的功能如下:
其中,表达式 1 和表达式 3 是一般设定语句。而表达式 2 则是一个关系表达式,如果此条件判断关系表达式是真(true)则循环继续,如果此条件判断关系表达式是伪(false),则跳出循环或是称结束循环。另外,若是循环主体只有一道指令,则可将大括号省略,否则我们应继续使用大括号。

由于 for 循环各表达式功能不同,所以也可以用下列表达式替换:
for (设置循环指标初始值; 条件判断; 更新循环指标)
{
    循环主体
}
当然,在上述 3 个表达式中,任何一个都可以省略,但是分号(;)不可省略,如果不需要表达式 1 和表达式 3,那么把它省略不写就可以了。

【实例】从 1 加到 100,并将结果打印出来。
int sum = 0;
int i;
for (i = 1; i <= 100; i++)
    sum += i;
Console.WriteLine($"总和 = {sum}");
执行结果为:

总和 = 5050

上述实例的 for 循环流程如下:


富有变化,是 C# 语言最大的特色,使用同样的控制语句,配合不同的运算符,却可得到同样的结果,下面程序范例将充分说明这个概念。

【实例】重新设计从 1 加到 100 的程序,并将结果打印出来。
int sum = 0;
int i = 1;
for (; i <= 100; )
    sum += i++;
Console.WriteLine($"总和 = {sum}");
上述的程序范例中,for 语句的表达式 1 被省略了,但是我们在 for 的前一列已经设定 i=1 了,这是合法的动作。另外,表达式 3 的指令也省略了,但是这并不代表,我们没有进行表达式 3 对应的动作,在此程序中,我们只是把表达式 3 和循环主体融合成一个指令罢了。
sum += i++; // 这是循环主体
上述相当于:
sum = sum + i;
i = i + 1;
所以,程序仍能产生正确结果。

【实例】从 1 加到 9,并将每一个加法后的值打印出来。
int sum = 0;
Console.WriteLine("  i    总和  ");
Console.WriteLine(("").PadRight(16, '-'));
for (int i = 1; i <= 9; i++)
{
    sum += i;
    Console.WriteLine($"{i}    {sum}");
}
执行结果为:
i    总和 
----------
1    1
2    3
3    6
4    10
5    15
6    21
7    28
8    36
9    45
上述程序的 for 循环概念的流程如下:


【实例】列出从 97 至 122 间所有的 ASCII 字符。
int i;
for (i = 97; i <= 122; i++)
    Console.Write($"{i}={Convert.ToChar(i)}\t");
执行结果为:
97=a    98=b    99=c    100=d   101=e   102=f   103=g   104=h   105=i   106=j   107=k   108=l   109=m   110=n   111=o   112=p   113=q   114=r   115=s   116=t   117=u   118=v   119=w   120=x   121=y   122=z

for无限循环

在 for 语句中如果条件判断,也就是表达式 2 不写的话,那么这个结果将永远是真,所以下面写法将是一个无限循环。
for(表达式1; ;表达式3)
{
    ...
}
或者是:
for( ; ; )
{
    ...
}
如果程序掉入无限循环,那么其实就是一个错误。如果要在程序中设计一个无限循环,就必须在特定情况让此程序离开此无限循环,无限循环常用在以下两个地方:
如果程序设计错误掉入无限循环陷阱,可以使用 Ctrl+C 键强行离开无限循环。

for循环嵌套

和其他高级语言一样,C# 中 for 循环也可以形成双层循环。所谓的双层循环控制语句就是某个 for 语句在另一个 for 语句里面,其基本语法概念如下所示:


我们也可以将多层次的循环称为嵌套循环(nested loop)。

【实例】利用双层for循环语句,打印九九乘法表。
int i, j, result;
for (i = 1; i <= 9; i++)
{
    for (j = 1; j <= 9; j++)
    {
        result = i * j;
        Console.Write($"{i}*{j}={result,-3}");
    }
    Console.WriteLine("");
}
执行结果为:
1*1=1  1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9
2*1=2  2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18
3*1=3  3*2=6   3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27
4*1=4  4*2=8   4*3=12  4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36
5*1=5  5*2=10  5*3=15  5*4=20  5*5=25  5*6=30  5*7=35  5*8=40  5*9=45
6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  6*7=42  6*8=48  6*9=54
7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  7*8=56  7*9=63
8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  8*9=72
9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
上述程序的流程如下所示:

相关文章