4.4.3 for循环
这类循环可以执行指定的次数,并维护它自己的计数器。
要定义for循环,需要下列信息:
初始化计数器变量的一个起始值。
继续循环的条件,它应涉及到计数器变量。
在每次循环的最后,对计数器变量执行一个操作。
例如,如果要在循环中,使计数器从1递增到10,递增量为1,则起始值为1,条件是计数器小于或等于10,在每次循环的最后,要执行的操作是给计数器加1。
这些信息必须放在for循环的结构中,如下所示:
for (<initialization>; <condition>; <operation>) { <code to loop> }
它的工作方式与下述while循环完全相同:
<initialization> while (<condition>) { <code to loop> <operation> }
循环输出从1~10的数字。下面看看如何使用for循环完成这个任务:
int i; for (i = 1; i <= 10; ++i) { Console.WriteLine("{0}", i); }
最后要注意的是,可以把计数器变量声明为for语句的一部分,重新编写上述代码,如下所示:
for (int i = 1; i <= 10; ++i) { Console.WriteLine("{0}", i); }
但如果这么做,就不能在循环外部使用变量i(参见第6章中的“变量作用域”一节)。
下面看一个示例,他将:显示一个Mandelbrot集合(使用纯文本字符,看起来不会那么吸引人)!,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ch04Ex06 { class Program { static void Main(string[] args) { double realCoord, imagCoord; double realTemp, imagTemp, realTemp2, arg; int iterations; for( imagCoord =1.2; imagCoord >= -1.2; imagCoord -= 0.05 ) { for( realCoord = -0.6; realCoord <= 1.77; realCoord += 0.03 ) { iterations = 0; realTemp = realCoord; imagTemp = imagCoord; arg = ( realCoord * realCoord ) + ( imagCoord * imagCoord ); while( ( arg < 4 ) && ( iterations < 40 ) ) { realTemp2 = ( realTemp * realTemp ) - ( imagTemp * imagTemp ) - realCoord; imagTemp = (2 * realTemp * imagTemp) - imagCoord; realTemp = realTemp2; arg = ( realTemp * realTemp ) + ( imagTemp * imagTemp ); iterations += 1; } switch( iterations % 4 ) { case 0: Console.Write( "." ); break; case 1: Console.Write( "o" ); break; case 2: Console.Write( "O" ); break; case 3: Console.Write( "@" ); break; } } Console.Write( "\n" ); // 换行 } Console.ReadKey(); } } }
运行结果如下:
时间: 2024-10-20 08:12:44