流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环

switch

开发中:检测一个变量是不是符合某个条件,不符合用另一个值来检测。

eg:给某个同学的成绩打评语。

switch多分支语句:进行多种情况判断。

基本语法:switch关键字后跟表达式 case关键字 每个switch语句有多个case标签 每个case标签对应的值不一样,会根据值匹配执行相应的语句,每一个case标签后有一个break来退出当前switch语句。 表达式的类型只能是这四种类型 每个case后有:和break

识记红色三个关键地方

执行流程:有一个判断参数,根据判断参数去执行用哪个语句,如果符合某一个执行相应语句然后退出相应语句。

switch语句应用

使用switch时每个case标签都可以进行多条件判断。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace @switch
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用switch实现:根据银行的简称输出银行中文全称。
            Console.WriteLine("请输入银行的简称:");  //输入提示
            string str = Console.ReadLine();//使用字符串变量记录输入
            switch (str)   //switch语句进行判断   要判断的参数值
            {
                case "ICBC": //每个case标签下进行判断  执行相应语句
                case "icbc"://注意:每一个case标签可以进行多个判断,如果输入是小写也会和大写一样匹配执行这条语句   
                    //多条件是或的关系,或者匹配大写,或者匹配小写。也可以是多个。  
                    Console.WriteLine("中国工商银行");  //执行相应语句    不管输入匹配是大写还是小写,都会匹配执行这条相应语句。
                    break;  //每个case都要有braek用于退出当前语句

                case "CBC": //每个case标签下进行判断  执行相应语句
                    Console.WriteLine("中国建设银行");
                    break;  //每个都要有用于退出当前语句

                case "ABC": //每个case标签下进行判断  执行相应语句
                    Console.WriteLine("中国农业银行");
                    break;  //每个都要有用于退出当前语句

                default:   //以上标签都不满足用default标签编写   default标签不是必须的,switch里面可以省略default   default:在不满足其它case标签情况下执行default标签里的语句
                    Console.WriteLine("输出银行简称错误"); //都不满足在default标签执行相应语句
                    break;  //default标签也要有brrak退出
            }
            Console.ReadLine();
        }
    }
}

只要三个case标签满足其中一个就会执行下面的语句。 --哪个季节在哪个月

使用switch时每一个case标签都会进行多个条件的判断。

switch应用场合

选择各种角色; --遇到多条件选择用switch语句实现

switch使用需要注意的问题

1.使用switch语句时,常量表达式的值绝不可以是浮点类型! 枚举是自定义的类型

2.C#里面case或default标签中的break不可以省略。

C语言:想要执行case标签后再执行接下来的标签是可以把break省略。

switch与if...else if...else的区别

1.操作对象不同:if...else if...else主要是对关系表达式,逻辑表达式和布尔值进行判断。

switch主要是对常量值进行判断,常量值的类型可以是这几种中的一种。

遇到多分支选择情况,判断不是关系表达式或逻辑表达式就可以使用switch代替if...else if...else语句。 执行效率会更高。

练一练:模拟高考录取分数线查询

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace @switch
{
    internal class Program
    {
        static void Main(string[] args)
        {

            //用switch语句如何实现两种语句实现同一种功能:
            //模拟高考录取分数线查询
            Console.WriteLine("请输入要查询的录取分数线(比如民办类本科、艺术类本科、体育类本科、二本、一本)");
            string str=Console.ReadLine();  //记录用户输入
            switch(str)//switch判断变量的值
            {
                case "民办类本科":
                    Console.WriteLine("民办类本科的录取分数线是350");
                    break;

                case "艺术类本科":
                    Console.WriteLine("艺术类本科的录取分数线是290");
                    break;

                case "体育类本科":
                    Console.WriteLine("体育类本科的录取分数线是280");
                    break;

                case "二本":
                    Console.WriteLine("二本的录取分数线是445");
                    break;

                case "一本":
                    Console.WriteLine("一本的录取分数线是555");
                    break;
            }
            Console.ReadLine();
        }
    }
}
cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace @switch
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //用if...else if...else
            Console.WriteLine("请输入要查询的录取分数线(比如民办类本科、艺术类本科、体育类本科、二本、一本)");
            string str=Console.ReadLine();  //记录用户输入
            if (str == "民办本科")
            {
                Console.WriteLine("民办类本科的录取分数线是350");
            }
            else if (str == "艺术类本科")    //判断是不是其它的本科
            {
                Console.WriteLine("艺术类本科的录取分数线是290");
            }
            else if (str == "体育类本科")    //判断是不是其它的本科
            {
                Console.WriteLine("体育类本科的录取分数线是280");
            }
            else if (str == "二本")    //判断是不是其它的本科
            {
                Console.WriteLine("二本的录取分数线是445");
            }
            else if (str == "一本")    //判断是不是其它的本科
            {
                Console.WriteLine("一本的录取分数线是555");
            }
            Console.ReadLine() ;
        }
    }
}

两个语句都能实现同样的功能,但用switch的时候是判断常量值,case后跟常量值。

if...else if...else 表达式里面需要一个关系表达式或逻辑表达式,判断值是不是与字符串相等,相等才执行下一个语句。

while循环语句

主要用来实现单行的循环结构。当满足某种条件情况下执行相应循环结构。

while循环简单执行流程:

语法格式:

while(表达式) //返回值是true/false值

{

语句

}

执行while循环的时候在表达式满足情况下会一直执行大括号中的语句。

执行流程:执行下来之后会首先判断表达式的真假值,真的话执行循环语句再返回去重新判断表达式的值(每执行一次循环都会判断一次表达式的值),如果为假直接执行循环外面的语句。

while循环应用
cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace while循环应用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用while循环实现1到100的累加和。  有明显重复性和规律性  循环语句实现  需要有1个循环条件和两个变量  sum记录和初始值是0  i初始值是1(从1进行相加)
            //进行第一次循环时会判断循环条件在1-100之间  1真执行sum+1操作  sum变1,i的值递增一个变2  2在1-100之间满足循环条件  1的值加2,i变3  都会执行sum+i操作,i的值递增1
            //计算结果时i的值再递增1变101,101超出1-100范围循环条件变假不再执行循环操作
            int i = 1;//定义两个初始条件从1开始计算和
            int sum = 0;//定义一个sum初始值是0记录1-100累加和
            while (i <= 100)  //while循环中写判断条件 i小于等于10才会执行循环体中语句
            {
                sum=sum+i;//或写成sum+=i;  //循环体中语句对sum执行加i操作
                i++;  //对i执行递增操作
            }
            Console.WriteLine("1到100的累加和:" + sum);   //输出1-100累加和
            Console.ReadLine();//定位控制台窗体
        }
    }
}
使用while循环需要注意的问题

1.while后的{}使用问题。

while循环体正常执行放到一对大括号内,如把1-100累加和修改成这样(把大括号去掉循环体语句还在编写)--无任何输出

大括号去掉后默认只执行while后的第一条语句,条件满足只执行第一条语句,第二条语句变成循环之外语句。

iNum放到循环体之外,默认是她的初始值,永远满足这个条件。形成死循环。

会把第一条语句作为循环体语句,会出现问题。 --不加{}

do...while和for循环一样 循环体如果是多条语句,需要用大括号括起来,如果不用大括号,则循环体只包含while语句后的第一条语句。

2.while死循环的问题

定义变量判断i<=2情况下一直输出这个值

没有对i进行循环体操作i的值一直保持不变,条件永远满足。执行中不会有任何输出结果,造成死循环。

修改:对i进行递增操作就行 i++ 用递增操作会出现F,执行完循环后执行后面语句。

通常:在循环体中对循环变量进行递增或递减操作。

这里i叫循环变量,while表达式里通过判断i的值进行循环操作这里对此进行递增操作。

特别说明:C#中的while与C++中的while区别

C#中while值只能是布尔值

do...while语句

注册新账号:防止手误都会提示输入新密码,如果两次密码不一致提示用户输入的密码有误请重新输入,用户重新输入密码让用户重新输入,实现功能让用户输入再执行判断。注册特点以下两点:

while循环循环内外部都要进行判断。重复代码使程序笨重。 do...while循环解决问题。

语法:

do

{

要执行语句 //语句至少执行一次

}

while(表达式); //T或F 分号不能省

首先执行循环语句,再判断表达式真假。

while(表达式); //判断完表达式后再执行循环语句。

while表达式一开始语句不满足一次都不执行。

do...while首先执行这个语句,然后进行表达式判断。

简单执行流程:首先执行循环语句再判断表达式真假,如果是真循环执行这个语句再来判断,如果是假跳出循环执行其它语句。

do...while循环应用

试一试:使用do...while循环实现1到100的累加和。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 循环_do__while
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用do...while循环实现1到100的累加和。
            int i = 1;
            int sum = 0;
            do
            {
                sum += i;  //对i进行递增操作
                i++;

            }
            while (i <= 100);
            //把条件判断放到循环体后面
            Console.WriteLine("1到100的累加和:" + sum);
            Console.ReadLine();

        }
    }
}

注意:不要忘记写;

while和do...while语句的区别

while循环执行几遍: iNum初始值是1, iNum小于1情况下才会执行循环体的语句,左边循环体语句一次都不会被执行。iNum初始值是1,1<1不满足执行0遍

右边: iNum初始值是1,初始完 iNum后会首先输出 iNum的值,然后再对 iNum执行++操作,最少执行一遍。执行完++操作后 iNum变成2,2小于1条件不满足,再过来不执行这个循环,do...while循环至少执行1遍

区别:while把判断条件放循环体前面,有可能一次都不执行循环体;do...while判断条件放到循环体后面,至少会执行一次循环体语句。

for循环

C#中非常常用的一种循环语句,非常灵活,可控性强,重点掌握。

语法格式:

for (表达式1; 表达式2; 表达式3) //三个表达式

{

语句

}

说明:

(1)表达式1通常用来初始化循环变量

(2)表达式2是一个关系表达式或逻辑表达式,用来作为判断条件

(3)表达式3通常用来对循环变量进行递增或递减操作,以便存在能够使循环结束的条件

(4)使用时表达式之间用分号连接,分号一定不能省略

基本执行流程:

表达式1用来初始化循环变量判断表达式2的真假,如果是真执行循环体中语句,再执行表达式3,表达式3对循环变量进行递增递减操作,执行完表达式3后再来判断表达式2的真假再循环执行,如果表达式2为假直接跳出for循环执行后面的语句。

for循环应用

使用for循环实现1到100的累加和。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace for循环应用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用for循环实现1到100的累加和。
            int i;  //i的赋值操作给去掉在for循环第一个表达式里写
            int sum = 0;
            for(i=1;i<=100;i++)
            {
                sum+=i;
            }
            Console.WriteLine("1到100的累加和:" + sum);
            Console.ReadLine();
        }
    }
}
使用for循环可能出现的一些问题

1.for循环后多加分号的错误。 多加;相当于for循环执行了100次空语句,sum+=i属于for循环体之外的语句,sum值等于现在i的值,输出101 分号相当于空语句,加分号变成一个空语句,在循环体之外语句。

2.for循环变体--表达式可以省略。省略"表达式1"需要在for循环前面为循环变量赋初始值。表达式1后面的分号不能省略。

cs 复制代码
using System.Threading.Tasks;

namespace for循环应用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用for循环实现1到100的累加和。
            int i=1; 
            int sum = 0;
            for(; i<=100;i++)
            {
                sum+=i;
            }
            Console.WriteLine("1到100的累加和:" + sum);
            Console.ReadLine();

            //使用for循环省略"表达式1"的形式实现1到100的累加和。
            
        }
    }
}

for循环变体--表达式可以省略。省略"表达式2"

for(表达式1;; 表达式3)

{

语句

}

省略表达式2有可能造成死循环。

省略表达式3:表达式2后面;不能去掉。

用来对循环变量进行操作,以便能跳过跳出循环的条件。 没有循环变量递增操作,也有可能造成死循环。

一旦造成死循环就需要再循环体内有条件进行判断,从而跳出循环。

注:省略表达式2或省略表达式3都有可能造成死循环情况。

三个表达式都省略:相当于永远为真。

两个分号不能少,初始条件、条件判断和条件递增都没有了,会执行死循环。
巧用"死循环":在控制台窗体中循环输入数据时,可以使用"死循环"!

开发人员主动设置的死循环,为了能够输入数据。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace for循环应用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //死循环演示:用for省略表达式情况
           Console.WriteLine("请输入用户名:");
            
                Console.ReadLine();
            }
        }
    }
}
cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace for循环应用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            
            //死循环演示:用for省略表达式情况
            //Console.WriteLine("请输入用户名:");
            for (; ; )
            {
                Console.WriteLine("请输入用户名:");

                Console.ReadLine();
            }
        }
    }
}

有可能是逻辑错误造成的死循环,也有可能是程序设计者专门设置的死循环。

程序开发中尽量避免死循环产生。

for循环变体说明

无论使用for循环的哪种变体形式,for关键字后面的()中都必须保证有两个分号。

表达式1和表达式2后面的分号不能省略。

for循环中逗号的应用

表达式1和表达式3都可以使用,连接

表达式2使用逗号连接符表示不正确

表达式2判断两个条件是否同时满足使用逻辑运算符,表达式2不能用,连接。

foreach语句
使用foreach语句遍历数组

语法:

foreach(【数据类型】 【迭代变量名】 in 【集合表达式】) //数组就是一种集合表达式

{

语句

}

//定义字符串数组,想要遍历字符串数组输出它其中的元素就直接使用foreach语句

//在数组里面

//CWL 输出变量名

遍历数组操作:循环和foreach

跳转语句

转移语句又叫跳转语句。 如果遇到死循环使用转移语句跳出死循环。

C#中转移语句:break语句;continue语句;goto语句

转移语句主要用来提前结束循环

break

使用for循环变体时省略表达式2的变体形式,造成死循环。

break用于循环中主要是跳出循环使用,跟switch一个道理,break用于switch里面是跳出switch多分支语句,用于循环里面是跳出循环。

continue的使用

计算1-100以内的偶数和?

continue作用:忽略循环语句内忽略continue的代码继续下一次操作

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;

namespace continue的使用
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //2+4+6+8+......+100=?
            int i;   //定义int变量i
            int sum = 0;  //定义int变量sum记录初始值是0
            for (i = 1; i <= 100; i++)//for循环变量中记录初始化操作记录i
            {
                if (i % 2 == 1)//计算100以内偶数和  遇到奇数跳过      遇到奇数用continue执行下一次循环
                {
                    continue;//继续执行下一次循环  是继续下一次循环,不时执行相加操作
                }
                sum += i;//计算100以内的和
            }
                Console.WriteLine(sum);//直接输出sum值
                Console.ReadLine();
        }
    }
}

continue说明识记

break和continue的区别

区别:break如果是假直接执行while后面的语句,不进入循环体。如果是真不进入while循环中语句判断表达式2的值,表达式2的值如果是假会继续执行下一次循环,如果是真用break直接跳出循环执行while循环后的语句。

对表达式1进行判断,如果是假执行while后循环语句;如果是真执行while后循环体然后判断表达式2的值,表达式2值是假执行循环体再回头判断,表达式2是真勇continue会直接开始下一次循环,不执行后面循环体语句。

最大区别:break跳出循环,continue直接开始新的循环。

break和continue可以直接用在if语句中吗? --不能会报错

break和continue用在循环中搭配if语句使用

goto语句的使用

goto语句是一种无条件跳转语句。

使用这种语句可以无条件使程序跳转到代码的任何一条语句。

常用语法: goto标签;

定义标签基本形式:标签名+冒号 Lable:

使用goto语句可以改变代码的顺序。

//使用goto语句实现1到100的累加。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;

namespace goto语句
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用goto语句实现1到100的累加。
            int i = 0;
            int sum = 0;  //定义两个变量初始化是0
        label:
            i++;  //i++操作i的值变1
            sum += i;//执行相加操作  sum也变成1

            if (i < 100)  //中间进行内部循环,i小于100不成立时不进入goto语句
            {
                goto label;  //i<100执行goto语句,goto语句跳转到label标签重复执行i++  sum+=i操作  再进行条件判断   
            }
            Console.WriteLine(sum);//直接输出最后运算结果
            Console.ReadLine();
        }
    }
}

goto使用说明:goto语句可以忽略当前程序的逻辑,直接使程序跳转到某一语句执行,有时非常方便,但是也正是由于goto语句的这种特性,在程序开发中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。 这里了解

return语句
循环嵌套使用

使用循环嵌套打印九九乘法表;;。

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 循环嵌套
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用循环嵌套打印九九乘法表。
            int iRow, iColumn;  //定义行和列
            for(iRow=1; iRow<10;iRow++)  //初始化行
            {
                for(iColumn=1; iColumn <= iRow; iColumn++)   //初始化1   列数小于等于行数   
                { 
                Console.Write("{0}*{1}={2} ",iColumn,iRow,iRow*iColumn);//输出每一行数据  占位符输出   0 1 2分别对应后面的行列 有对应参数
                }
                Console.WriteLine();//输出下一行会换行输出
            }
            Console.ReadLine();
        }
    }
}
相关推荐
mudtools2 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的2 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21882 天前
.NET 本地Db数据库-技术方案选型
windows·c#
lindexi2 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
qq_454245033 天前
基于组件与行为的树状节点系统
数据结构·c#
bugcome_com3 天前
C# 类的基础与进阶概念详解
c#
雪人不是菜鸡3 天前
简单工厂模式
开发语言·算法·c#
铸人3 天前
大数分解的Shor算法-C#
开发语言·算法·c#
未来之窗软件服务3 天前
AI人工智能(二十四)错误示范ASR张量错误C#—东方仙盟练气期
开发语言·人工智能·c#·仙盟创梦ide·东方仙盟
yong99903 天前
基于C#实现的UPnP端口映射程序
开发语言·c#