当前位置:首页 > C#教程 > C#高级

(原创)c#学习笔记04--流程控制04--循环03--for循环

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 ) {
                        case0:
                            console.write( "." );
                            break;
                        case1:
                            console.write( "o" );
                            break;
                        case2:
                            console.write( "o" );
                            break;
                        case3:
                            console.write( "@" );
                            break;
                    }
                }
                console.write( "n" );  // 换行
            }
            console.readkey();
        }
    }
}

  运行结果如下:

 


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!