ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

6. 流程控制语句

2021-04-09 20:57:10  阅读:99  来源: 互联网

标签:语句 控制 Console 流程 break while WriteLine 表达式


流程控制语句


流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序步骤的基本手段。

1 条件判断语句

条件判断语句用于根据某个表达式的值从若干条给定语句中选择一条来执行。条件判断语句包括if语句和switch语句俩种。
条交件判断语句的执行过程就好比在商场买东西时,是拿现金还是刷卡。如果刷卡使用信用卡还是银行卡,它是对事物的一个选择过程。

1.1 if语句

  1. 简单的if条件语句
if(布尔表达式)
{
	语句序列
}
  1. if…else语句
if(布尔表达式)
{
	语句序列1
}
else
{
	语句序列2
}
  1. if…else if 多分支有语句
if(布尔表达式)
{
	语句序列1
}
else if (布尔表达式)
{
	语句序列2
}
...
else
{
	语句序列 N
}

在if语句中可以使用return语句,用于退出if语句所在类的方法。
实例:

int age = 66;
if (age<12)
{
	Console.WriteLine("你还是个小屁孩") ;
}
else if (age == 12)
{
	Console.WriteLine("生日快乐");
}
else
{
	Console.WriteLine("你好靓仔");  //你好靓仔
}    
Console.ReadKey();

1.2 switch多分支语句

  1. switch关键字后面的括号中是条件表达式,大括号{}中的代码是由多个case语句构成,break用来跳出switch语句。
  2. 一个switch有且只有一个default标签。
  3. case后边的常量表达式类型必须与表达式相兼容。
  4. 在一个switch表达式中,不同case后边的常量表达式必须不同,否则编译报错。
    实例:
int age = 66;
switch (age)
{
	case 5: Console.WriteLine("你好小屁孩");
		break;
	case 18: Console.WriteLine("你好靓仔");
		break;
	default: Console.WriteLine("你好老头儿"); //你好老头儿
		break;
}
Console.ReadKey();

2 循环语句

2.1 while语句

2.1.1 基本的while循环

while(布尔表达式)
{
	语句块
}
while(布尔表达式)
{
	语句块
}
//计算1到10 的和
int i =0, a = 0;
while (i<=10)
{
    a +=  i;
    i++;
}
Console.WriteLine(a);    //55
Console.ReadLine();

注意:
初学者经常犯的一个错误就是在while表达式的括号后边加 “;”,这时程序认为要执行一条空语句,C#编译器又不会报错,着了能会浪费很多时间调试。

2.1.2 跳出或执行下一次循环

在while语句的嵌入语句块中,break语句用于将控制转到while语句的结束点,而continue语句用于将控制直接转到下一次循环。
在循环语句中,可以通过goto、return、throw语句退出。

//计算1到10 的所有偶数和
int i =0, a = 0;
while (i<=20)
{
    if (i <= 10 )
    {
        if (i%2==0)
        {
            a += i;
            i++;
        }
        else
        {
            i++;
            continue;
        }
                    
    }
    else 
    {
        break;
    }
}
Console.WriteLine(a);    //30
Console.ReadLine();

2.2 do…while语句

do…while需循环语句与while循环语句类似,它们之间的区别是:while语句为先判断条件是否成立再执行循环体,而 do…while循环语句则先执行一次循环在判断条件是否成立是否继续执行循环体。

do
{
	语句块
}while(布尔表达式);

实例:

//将数组中所有值都打印出来
 string[] st1 = new string[3] { "艾斯", "萨博", "路飞" };
 int i = 0;
 do
 {
     Console.WriteLine(st1[i]);
     i++;
 } while (i<st1.Length);
 Console.ReadLine();

2.3 for 语句

for语句用于计算一个初始化序列,然后当某个条件为真时,重复执行嵌套语句并计算一个迭代表达式序列。如果为假则终止循环。
基本语法:

for (初始化表达式;条件表达式;迭代表达式)
{
	语句块
}

初始化表达式:由一个局部变量声明或者由一个逗号分割的表达式列表组成,用初始化表达式声明的局部变量的作用域从变量的声明开始,一直到嵌入语句的结尾。
条件表达式:必须是一个布尔表达式
实例:

 //计算1到10 的和
int a = 0;
for (int i = 0; i < 11; i++)
{
    a += i;
}
Console.WriteLine(a);
Console.ReadLine();

2.4 foreach语句

foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,任何foreach语句都能改写为for语句版本。foreach语句用于枚举一个集合的元素,并对该集合中的每个元素执行一次植入语句。但是foreach语句不可以更改集合内容,以免产生不可预知的错误。
具体语法如下:

foreach (类型 迭代变量名 in 集合类型表达式)
{
	语句块
}

其中类型和迭代变量名用于声明迭代变量,迭代变量相当于一个范围覆盖整个语句块的局部变量。在foreach语句执行期间,迭代变量表示当前正在为其执行迭代的集合元素。
集合类型表达式:必须有一个从该集合的元素类型到迭代变量的类型的显式转换,如果集合类型表达式的值为null,则会出现异常。foreach也可也用于循环访问数组中的元素。
实例:

ArrayList alt = new ArrayList();
alt.Add("张三");
alt.Add("李四");
alt.Add("王五");
alt.Add("刘六");
foreach (string name in alt)
{
    Console.WriteLine(name);
}
Console.ReadLine();

3 跳转语句

跳转语句主要用于无条件地转移控制,跳转语句会将控制转到某个位置,这个位置就成为跳转语句的目标。如果跳转语句出现在一个语句块内,而跳转语句的目标却在该语句之外,则称该跳转语句退出该语句块。跳转语句主要包括break语句、continue语句、goto语句和return语句。

3.1 break语句

break语句只能应用于switch、while、do…while、for或foreach语句当中,当多个switch、while、do…while、for或foreach语句相互嵌套时,break语句只应用于最里层的语句。如果要穿越多个嵌套层,则必须使用goto语句。

3.1.1 break语句在switch语句中的应用

int i = Convert.ToInt32(DateTime.Today.DayOfWeek);
switch (i)
{
    case 1: 
        Console.WriteLine("周一");
        break;
    case 2:
        Console.WriteLine("周二");
        break;
    case 3:
        Console.WriteLine("周三");
        break;
    case 4:
        Console.WriteLine("周四");
        break;
    case 5:
        Console.WriteLine("周五");
        break;
    case 6:
        Console.WriteLine("周六");
        break;
    case 0:
        Console.WriteLine("周日");
        break;
    default:
        break;
}
Console.ReadLine();

3.1.2 break语句在for语句中的应用

 static void Main(string[] args)
 {
     for (int i = 0; i < 4; i++)
     {
         Console.WriteLine("\n第{0}次循环:",i);
         for (int j = 0; j < 200; j++)
         {
             if (j==12)
                 break;
             Console.Write(j + "  ");
         }
     }
     Console.ReadLine();
 }

从称序的运行结果中可以看出,使用break语句只终止了内层循环,并没有影响到外部的循环,所以程序依然经历了4次循环。

3.2 continue语句

continue语句只能应用于while、do…while、for或foreach语句中,用来忽略循环语句块内位于其后面的代码而直接开始新一次的循环。当多个while、do…while、for或foreach语句互相嵌套时,continue语句只能使直接包含它的循环语句开始一次新的循环。

for (int i = 0; i < 4; i++)
{
    Console.WriteLine("\n第{0}次循环:",i);
    for (int j = 0; j < 20; j++)
    {
        if (j%2==0)
            continue;
        Console.Write(j + "  ");
    }
    Console.WriteLine();
}
Console.ReadLine();

3.3 goto语句

goto语句用于将控制转移到由标签标记的语句。goto语句可以被应用在switch语句中的case标签和default标签,以及标记语句所声明的标签。goto语句的三种形式如下:

goto  标签
goto case 参数表达式
goto default 

goto的一个通常语法是将控制传递给特定的seitch-case标签或switch语句中的默认标签。goto语句还用于跳出深层嵌套循环。

static void Main(string[] args)
{
    Console.WriteLine("请输入要查找的文字:");
    string inputStr = Console.ReadLine();
    string[] myStr = new string[] { "张三", "李四", "王五", "孙六", "刘七" };
    for (int i = 0; i < myStr.Length; i++)
    {
        if (myStr[i].Equals(inputStr))
        {
            goto Found;
        }
    }
    Console.WriteLine("找不到{0}:", inputStr);
    goto Finish;
Found:
    Console.WriteLine("找到了{0}:", inputStr);
Finish:
    Console.WriteLine("查找完毕");
    Console.ReadLine();
}

注意
虽然goto语句有一定的使用价值,但是目前对他的使用存在争议。有人建议避免使用,有人建议用它来作为排除错误的基本工具。

3.4 return语句

return语句表示返回,
当把return语句用在普通的代码中,它表示返回,并且不执行return之后的代码。
当把return语句放在类中的方法时,他就是控制返回方法的调用者,如果方法有返回类型,return必须返回这个类型的值;而如果方法没有返回类型,则应该使用没有表达式的return语句。

static void Main(string[] args)
{
    Console.WriteLine("请输内容:");
    string inputStr = Console.ReadLine();
    Console.WriteLine(MyStr(inputStr));
    Console.ReadLine();
}
static string MyStr(string str)
{
    string OutStr;
    OutStr = "您输入的数据是:" + str;
    return OutStr;
}

标签:语句,控制,Console,流程,break,while,WriteLine,表达式
来源: https://blog.csdn.net/qq_41525263/article/details/115450836

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有