首页 > 编程语言 >c#结构

c#结构

时间:2023-04-21 10:44:58浏览次数:40  
标签:c# else C# 循环 条件 分支 结构

原文地址 zhuanlan.zhihu.com

c#结构

残枫cps残枫cps

​目录收起C#用流程图描述程序逻辑C#中判断和分支C#中if...else条件结构C#中嵌套的if结构C#中多重if结构C#中else与if的匹配C#的条件运算符:三元C#的switch结构C#循环流程图和while循环C#算法——求和C#中for循环C#中do…while循环C#循环结构之continueC#循环结构之break

C#用流程图描述程序逻辑

流程图是程序步骤的图形化表示方法。流程图中包括如下符号:

以上图形中,流程线用来连接相邻的两个步骤;每一个程序都有且仅有一个开始结束

以下流程图描述的是,求2个浮点数的和,后边是用C#实现:

C#中判断和分支

走到岔路口,需要选择方向。编写程序也会遇到判断和分支。请看下面的流程图,判断手机账户余额是否不足10元,如果不足给出提示:

这个程序在“balance<10”这个步骤出现了分支,“balance<10”被称为判断( bool 类型),当判断为 true 时,执行左边的分支,输出提示;当判断为 false 时,执行右边的分支,不输出任何内容。

在C#中,这个结构成为条件结构,通常用 if 关键字来实现:

if 右边的判断为 true 的时候,会执行分支一;如果判断为 false ,则不会执行分支一

C#中if...else条件结构

前一节我们学习了 if 条件结构。条件结构可以有2个分支,比如下面的流程图,判断一个整数是奇数还是偶数:

这个流程图从C#实现如下,其中,条件为 true 时执行的分支写在 if() 后面的{}中;条件为 false 时执行的分支写在 else 后面的{}中。

这个由 ifelse 组成的结构是条件结构的一种,它的基本逻辑是:当条件为 true 时,执行分支1,否则,执行分支2。这段程序中,变量num能够被2整除时会执行分支1,不能被2整除时执行分支2。程序的运行结果是:

每一个 if...else 结构都包含 1 个条件和 2 个分支,而程序会根据条件的真与假,选择执行其中的某一个分支。条件必须为 bool 类型的表达式。

C#中嵌套的if结构

程序开发中,往往需要先判断一个条件是否成立,再判断另一个条件。比如下面的例子:验证账号是否为“admin”,如果不是则提示错误;如果是,则验证密码是否为“bj2022”:

用C#实现如下:

外层的if (userName == "admin") 会被首先判断,如果为 false ,就会输出“用户名错误!”;如果为 true ,再判断内层的if (password == "bj2022")。

C#中多重if结构

如果,有多个条件,其中只有一个成立,应该怎样判断呢?比如小明考试,90分以上奖励一台手机,80-89分奖励一个滑板,60-79分奖励一个烧饼,60以下没有奖励,0-100的分数被划分为4档,需要做3次条件判断。如果用上一节学习的嵌套if结构完成,3层if的嵌套会使程序变得很复杂。本节我们使用多重 if 结构实现,它的基本语法为:

程序运行时,将从上到下依次判断条件,若某个条件为 true ,则执行对应的分支,并且停止后面条件的判断。比如下面的代码,将输出“奖励一个烧饼”:

C#中else与if的匹配

if...else 条件结构中,如果某个分支只包含一条命令,那么是可以省略大括号{}的。比如上一节的练习,可以简化为:

请注意,如果分支中包含2条以上的命令,是不能省略{}的。

如果 ifelse 比较多,又省略了{},怎么判断那一个 if 和哪一个 else 是一对呢?请看下面的代码:

当出现多个 ifelse ,又没有{}来界定范围时,请参考下面2条原则:

每一个 else 与前面离它最近的 if 配对。按照这个原则,上面示例代码的两个 else 都与第二个 if 配对,这显然是不可能的,于是又有了第二个原则。

多个 else 都与同一个 if 相近时,最内层的 else 优先配对。这样,第一个 else 处于内层,就与第二个 if 优先配对,第二个 else 只能与第一个 if 配对。上面的示例代码会输出“C”。

根据这两个原则,上面的代码等同于如下的规范代码:

编写条件结构时,尽可能加上 {} 可以省掉不必要的错误和麻烦。

C#的条件运算符:三元

C#提供了一种条件运算符,能够代替简单的 if...else 结构。这种条件运算符的语法如下:

条件表达式 ? 分支1 : 分支2

?: 就是条件运算符,可以看到它有3个操作数,所以又被称为三元运算符。它的运算逻辑是:当条件表达式为 true 时,执行分支1;当条件表达式为 false 时,执行分支2。

下面的例子中,根据年龄的大小,输出“成年人”或“未成年人”:

因为age=17,所以条件表达式age>=18的值为 false ,返回“未成年人”。

C#的switch结构

if...else 之外,C#中还有一种 switch 条件结构,可以用来对变量进行多个分支的等值判断。语法如下:

(变量)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。

下面的代码,根据运算符完成了四则运算中的一项:

上面的代码,因为变量oper的值与 case '*' 匹配,所以会输出乘积“18”。

switch 中的(变量)只能是3种类型:整型(如 int )、字符型( char )、字符串类型( string )。

C#循环流程图和while循环

程序连续的重复一个步骤称为“循环”。循环可以简化我们的代码,减少冗余。例如,打印 1-10 的整数,我们可以写 10 条打印语句,也可以这样:

这个循环结构,会首先判断 x<=10 ,条件为真时执行循环体(“输出x”和“x++”),之后,再次判断条件 x<=10 ,若条件为真则继续执行循环体......若条件为假,则结束循环。

简单的说,循环是由循环体(需要重复执行的命令)和循环条件组成的。运行时,先判断循环条件,若条件为 true ,就执行循环体一次,然后再判断条件...当条件为 false 时,结束循环。上面的流程图,当变量 x 累加到 11 时,循环条件为 false ,循环就会结束。

C#中,可以用 while 循环结构来实现:

对比代码和流程图可知, while 循环结构中,循环条件写在 () 中,循环体写在 {} 中。运行结果:

C#算法——求和

这一节,我们学习用循环累加的方式求和。

上一节,我们曾经循环打印过 1-10 的整数,如果声明一个变量,在打印的过程中,把每一个数字都累加到变量里面,就可以得到 1-10 的和。求和算法的基本步骤

①声明变量 sum 用来存储“和”。 sum 的初始值赋为 0 。

②循环,用变量 x 访问每一个数字,用 sum+=x 的方式累加。(即 sum=sum+x; )

③循环结束后, sum 中存储的即是和。

运行结果如下:

C#中for循环

前面已经学习了 while 循环,C#中还有一种非常有用的 for 循环,特别适合于“已知循环次数”的循环。

比如,循环打印3次“我能行!”,用 while 循环可以这样写:

而用 for 循环这样写:

可以看出来, while 循环有的变量声明、循环条件、变量自加, for 循环一个也不缺,但是 for 循环把这些跟循环次数有关的元素都放在 ( ; ; ) 中,使得{}中的循环体更加纯粹,程序结构更加清晰。

  • for 循环 ( ; ; ) 中的两个分号是不能缺少的。

for 循环运行时,首先进行变量声明和赋值;接下来判断循环条件,若条件为 true ,则执行循环体一次,若条件为 false ,则结束循环;执行循环体后,进行变量自加。然后会进入下一次循环

C#中do…while循环

C#中, do...while 循环也是一种常用的循环结构。循环结构各部分运行顺序如下:

从上面的示意可以看出, do...while 循环第一次执行循环体是没有经过条件判断的,也就是说会无条件的执行一次循环体,此后的逻辑

顺序就与while循环相同了——先判断条件,条件为true再执行循环体一次。请看下面的例子:

尽管循环条件始终为 false ,但由于 do...while 循环第一次执行循环体不判断条件,所以循环体还是执行了一次。运行结果为:

我们已经学习了C#中最常用的三种循环结构,下面我们小小总结一下:

for 循环的特点,是把与循环有关的内容都放在(计数变量初始化;循环条件;变量自加)里面,使得程序结构清楚,适合于已知循环次数的循环。

C#循环结构之continue

循环中可以应用 continue 关键字中止一次循环,直接进入下一次。请看下面的例子:

当程序执行到到 continue; 的时候,会立即停止本次循环体,直接进入下一次循环。所以,第三行输出比其他行少一些:

所以,可以使用 continue 关键字,在循环中剔除一些特殊的数据。

C#循环结构之break

前面学习 switch 结构时,我们曾经遇到过 break 关键字, breakswitch 结构的作用是“跳出 switch 结构”。

break 关键字还可以用在循环中,作用是“结束循环”。下面的循环代码中,当 x==3 的时候会执行 break

运行结果:

对比代码和运行结果可知,当执行到 break ,循环结束(尽管此时循环条件仍然为 true )。

利用 break 关键字和 true 关键字,我们可以用另一种方式编写循环,下面的代码是输出1-5的整数:

运行结果:

编辑于 2023-04-14 15:15・IP 属地山东开启赞赏赞赏开启后,读者将可以付费支持你的创作。C#​赞同​添加评论​分享​喜欢​收藏​设置

标签:c#,else,C#,循环,条件,分支,结构
From: https://www.cnblogs.com/cps666/p/17339511.html

相关文章

  • C#写一套最全的MySQL帮助类(包括增删改查)
    介绍说明:这个帮助类包含了六个主要的方法:ExecuteNonQuery、ExecuteScalar、ExecuteQuery、ExecuteQuery(泛型)、Insert、Update和Delete。其中,ExecuteNonQuery用于执行不返回结果集的SQL语句;ExecuteScalar用于执行一个查询,并返回结果集中第一行的第一列;ExecuteQuery用于执行一个查询......
  • ASEMI代理ADM3051CRZ-REEL7原装ADI车规级ADM3051CRZ-REEL7
    编辑:llASEMI代理ADM3051CRZ-REEL7原装ADI车规级ADM3051CRZ-REEL7型号:ADM3051CRZ-REEL7品牌:ADI/亚德诺封装:SOIC-8批号:2023+引脚数量:8安装类型:表面贴装型ADM3051CRZ-REEL7汽车芯片ADM3051CRZ-REEL7特征物理层CAN收发器VCC上的5V操作符合ISO11898标准高达1Mbps的高速数......
  • Oracle 创建定时任务 DBMS_JOB
    需求:创建一个每天凌晨一点执行的任务(存储过程)1、创建存储过程--一般存储过程语法CREATEORREPLACEPROCEDUREUPDATE_LABEL_TABLE_DATE_DTISBEGIN UPDATEIC_CO_BAE_INFOSETDT=TO_CHAR(TRUNC(SYSDATE-1),'yyyy-MM-dd'); UPDATEIC_RG_RRG_INFO_V1SETDT=TO_CHAR(......
  • 浅析流媒体技术的发展趋势及EasyCVR视频技术的应用
    随着科技的不断发展,流媒体已经成为人们日常生活中必不可少的一部分。为了进一步提高流媒体的质量,未来的技术革新方向将集中在以下几个方面:1)提高视频编解码技术的质量和效率随着高清视频的普及,人们对流媒体的质量要求越来越高。未来的技术革新方向将重点关注如何提高视频编解码技......
  • 关于浏览器的Selection对象,以及window.getSelection()的API用法
    Selection 对象就是用户选择的文本范围或插入符号的位置。它代表页面中的文本选区,可能横跨多个元素。文本选区由用户拖拽鼠标经过文字而产生。具有以下属性和方法。 1、anchorNode只读属性,返回选区开始位置所属的节点。用户可能从左往右框选,也可能从右往左框选。但是锚点......
  • Python | isinstance函数的使用
    isinstance是一个Python内置函数,用于检查一个对象是否是指定类或其子类的实例。isinstance(obj,cls)返回一个布尔值,表示obj是否是cls或其子类的实例。类似type()。isinstance()与type()区别:type()不会认为子类是一种父类类型,不考虑继承关系。isinstance()会认......
  • opencv 407 resize 类型
    enumInterpolationFlags{/**nearestneighborinterpolation*/INTER_NEAREST=0,/**bilinearinterpolation*/INTER_LINEAR=1,/**bicubicinterpolation*/INTER_CUBIC=2,/**resamplingusingpixel......
  • 一篇文章带你了解css z-index(重叠顺序)
    divcssz-index层重叠顺序div层、span层等html标签层重叠顺序样式z-index,平时CSS使用较少,但也会难免会碰到CSSz-index使用。从基础语法到应用案例教程讲解学习z-index。一、z-index语法与结构z-index跟具体数字div{z-index:100}注意:z-index的数值不跟单位。z-index的数字越高......
  • 深度学习基础入门篇[六(1)]:模型调优:注意力机制[多头注意力、自注意力],正则化【L1、L2,D
    1.注意力机制在深度学习领域,模型往往需要接收和处理大量的数据,然而在特定的某个时刻,往往只有少部分的某些数据是重要的,这种情况就非常适合Attention机制发光发热。举个例子,图2展示了一个机器翻译的结果,在这个例子中,我们想将”whoareyou”翻译为”你是谁”,传统的模型处理方式是......
  • CS61A_lab12_macro
     (define-macro(deffuncargsbody)`(define,(consfuncargs),body))分析:定义一个万能的函数定义,那就要模拟函数定义的样子。ok,函数定义是什么样子的呢?eg:(define(filter-lstfnlst)(if(null?lst)nil(if(fn(carlst))(cons(carlst)(fi......