Csharp中的循环结构

原文地址:http://www.dingos.cn/index.php?topic=937.0


【什么是循环】
循环是程序中重复执行,直到满足指定条件才停止的一段代码。控制循环执行的条件在编码时用到了关系和逻辑运算符。
循环结构的特点:
1. 循环有一个起始点 (循环的初始条件)
2. 循环在条件 (循环条件)满足时执行循环操作,否则循环结束。
3. 循环过程中需要检查循环执行的状态 (修改循环变量)
Csharp中常见的循环结构:
  • while循环
  • do-while循环
  • for循环
  • foreach循环

for循环】
for(初始化计数; 条件测试; 再求值参数){
   语句;
}

初始化计数是一个赋值语句,它在进入循环前设置循环控制变量
条件测试是一个关系表达式,它决定何时退出循环
再求值参数定义每次执行循环时循环控制变量如何变化
for 循环的三个部分必须用分号 ( ; ) 隔开
组成循环体的语句可以是单个语句,也可以是复合语句
只要测试条件的求值结果为true,for循环就继续执行。当条件变为false时,程序将继续执行for循环后面的语句。

执行步骤:
1. 初始化参数(只执行一遍)。
2. 循环条件判断,如果为真执行循环体,如果为假退出循环,执行循环体后面的语句。
3. 更新循环变量。
4. 重复步骤2和步骤3。

使用for循环结构的步骤
1、分析循环条件和循环操作
2、套用for语法写出代码
3、检查循环是否能够退出

示例
using System;
class Test {
   public static void Main(){
      int count;
      Console.WriteLine("/tThis is a /n");
      for(count = 1; count <=6 ; count++)
         Console.WriteLine("/n/t/t nice");
         Console.WriteLine("/n/t/t world./n");
      }
}

【逗号运算符】
通过在for循环署名中包含多哥初始化表达式或增量表达式,可以扩展for循环作用域。
exprn1, exprn2 ;
表达式被逗号运算符隔开,从左向右求值。

示例
using System;
class Test {
   public static void Main(){
      int i, j , max;
      Console.WriteLine("Please enter the maximum value /n");
      Console.WriteLine("for which a table can be printed: ");
      max = Convert.ToInt32(Console.ReadLine());
      for(i = 0, j = max; i <= max ; i++, j--)
         Console.WriteLine("/n%d    %d    %d",i, j, i + j);
      }
}
说明
在for循环中,初始化参数是:i=0,j=max
再求值(增量)参数有两个表达式组成:i++,j--

【嵌套for循环】
如果一个for循环出现在另一个for循环中,则称它为嵌套循环。
for(i = 1; i<max1; i++){ 
            ……
            for(j = 0; j < = max2; j++){
                        … …
            }
            …… 
}

示例
using System;
class Test {
   public static void Main(){
      int i, j, k;
      i = 0;
      Console.WriteLine("Enter no. of rows:");
      i = Convert.ToInt32(Console.ReadLine());
      for (j = 0; j < i ; j++){
         for (k = 0; k <= j; k++)
            Console.Write("*");
         Console.Write("/n");
      }
   }
}
这个程序是在每一行中显示“*”的数量增加1。

【for循环更多知识】
使用for循环可以包含部分定义,或不包含任何定义
for( ;num<100)或 for( ; ;)

使用for循环可以不包含任何循环体(语句),有助于提高某些算法的效率和创建时间延迟循环
for(i=0;i<xyz_value;i++)

【while循环】
while(条件为true)
            语句;
语句可以是空语句、一个简单的语句或语句块
如果while循环中包含一组语句,必须用{}括起来
只要条件为真循环就会迭代

执行步骤
1. 判断条件是否为真,如果为真则进入循环体,如果不为真则执行while循环后的语句。
2. 执行循环体中的内容(包括修改循环变量)。
3. 重复执行步骤1。

使用while循环的步骤
1、分析循环条件和循环操作
2、套用while语法写出代码
3、检查循环是否能够退出

示例
using System;
class Test {
   public static void Main(){
      int count = 1;
      while(count <= 10){
         Console.WriteLine("This is iteration{0}",count);
         count++;
      }
      Console.WriteLine("/nThe loop is completed.");
   }
}

和for循环不一样,while循环在执行循环前检查条件。

【do-while循环】
do{
            语句;
}while(条件)

do...while 循环中,循环体中的代码。
在条件测试执行前执行一次条件变为 false 时,do while 循环终止;控制权传递给紧跟在 while 语句之后的语句

执行步骤:
1. 执行循环体中的语句(包括修改循环变量)。
2. 判断循环条件,如果条件为真在重复执行循环体中的内容,如果条件为假时执行循环体外的内容。
3. 重复执行步骤1和步骤2。

示例
using System;
class Test {
   public static void Main(){
      int num1, num2;
      num2 = 0;
      do{
         Console.WriteLine("Enter a number : ");
         num1 = Convert.ToInt32(Console.ReadLine());
         Console.WriteLine("No. is {0}",num1);
         num2++;
      } while (num1 != 0);
      Console.WriteLine("The total numbers entered were {0}", --num2);
   }
}
接受并显示一些整数,直到输入0(零),然后退出整个循环,并打印输入的整数的个数。

【while循环和do-while循环的区别】
1. 语法不同
while循环:
while ( 循环条件 ) {
      循环操作
}
先判断,再执行

do-while循环:
do {
      循环操作
} while( 循环条件 );
先执行,再判断

2. 初始情况不满足循环条件时while循环一次都不会执行
do-while循环不管任何情况都至少执行一次

【foreach循环】
foreach (元素类型 变量名 in 集合或者数组名){
             // 语句
}

说明:
1. “元素类型”必须和集合或数组中的元素类型相符。
2. 循环变量集合和数组中的元素。
3. 遍历过程中只能方法集合或数组中的元素,不能修改他们。
4. 使用时优先考虑使用foreach语句。

【多重循环】
当循环体中包含其他的循环结构称为 多重循环
在使用多重循环时要注意循环的嵌套,保证在 外循环结束前内循环已经结束

【跳转语句 - return】
return expression
return 语句用于从函数中返回
return 语句可以带有值,该值将返回给调用程序,它使执行返回到调用函数的位置,表达式是可选的,一个函数中可以使用多个return语句,但是遇到第一个return语句时返回

【跳转语句 - break】
用于在 switch 语句中终止case;也可以用于在循环中突然终止循环,当循环中遇到 break 语句时,循环立即终止,控制权传递给循环之后的语句。

示例
using System;
class Test {
   public static void Main(){
      int count1, count2;
      for(count1 = 1, count2 = 0;count1 <=100; count1++){
         Console.WriteLine("Enter {0} count2 : ",count1);
         count2 = Convert.ToInt32(Console.ReadLine());
         if(count2 == 100)
            break;
      }
   }
}

【跳转语句 - continue】
continue 语句让封闭循环进行下一次迭代遇到该语句时,跳过循环体中剩余的语句,控制权传递给重新初始化
在while循环和do…while循环中,程序控制权传递个条件测试语句
在for循环中,continue影响循环的增量部分,然后执行条件测试

示例
using System;
class Test {
   public static void Main(){
      int num;
      for(num = 1; num <=100; num++){
         if(num % 9 == 0) 
            continue;
         Console.Write(num + "/t");
      }
      Console.WriteLine();
   }
}
打印1-100之间不能被9整除的数

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页