C# for循环语句的用法(非常详细)
假设现在要求读者设计一个从 1 加到 10 的程序,然后打印结果,读者可能用下列方式设计这个程序。
for循环(loop)的语法如下:
其中,表达式 1 和表达式 3 是一般设定语句。而表达式 2 则是一个关系表达式,如果此条件判断关系表达式是真(true)则循环继续,如果此条件判断关系表达式是伪(false),则跳出循环或是称结束循环。另外,若是循环主体只有一道指令,则可将大括号省略,否则我们应继续使用大括号。
由于 for 循环各表达式功能不同,所以也可以用下列表达式替换:
【实例】从 1 加到 100,并将结果打印出来。
富有变化,是 C# 语言最大的特色,使用同样的控制语句,配合不同的运算符,却可得到同样的结果,下面程序范例将充分说明这个概念。
【实例】重新设计从 1 加到 100 的程序,并将结果打印出来。
【实例】从 1 加到 9,并将每一个加法后的值打印出来。
【实例】列出从 97 至 122 间所有的 ASCII 字符。
如果程序设计错误掉入无限循环陷阱,可以使用
我们也可以将多层次的循环称为嵌套循环(nested loop)。
【实例】利用双层for循环语句,打印九九乘法表。
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.设定循环指标的初始值;
- 表达式 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( ; ; )
{
...
}
如果程序掉入无限循环,那么其实就是一个错误。如果要在程序中设计一个无限循环,就必须在特定情况让此程序离开此无限循环,无限循环常用在以下两个地方:
- 让程序暂时中断。其实我们可以使用 C# 语言的 Thread.Sleep() 方法执行此功能;
- 猜谜游戏,答对才可以离开无限循环。
如果程序设计错误掉入无限循环陷阱,可以使用
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上述程序的流程如下所示:

ICP备案:
公安联网备案: