下面代码圈住的continue和else是不是用一个就行?

陆续刷了好久,算是刷完了《剑指offer》,以下全部AC代码,不一定性能最优,如有错误或更好解答,请留言区指出,大家共同交流,谢谢~

64.滑动窗口的最大值

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。

66.机器人的运动范围

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

}

我们先了解switch是什么,翻译过来的中文意思是开关,在C语言中是指选择不同的开关即不同的分支来完成语句。接下来讲一下switch的结构和基本使用。

一般的switch语句的结构
}//当然我们一般也喜欢用{}来包括case后面得语句和break
 

switch语句是从case进,break出,case后面只能跟常量或者常量表达式,n是一个变量,与if不同的是,if是判断表达值是真或假,而switch判断的是变量中储存的值具体是多少,然后根据这个值寻找对应的case,当所有的case均无法进入时会进入default这个最后的入口。switch的使用情况一般就是菜单使用和成绩表等的等级划分等。菜单使用相信大家能够理解,n为不同的值的时候我们会进行不同的操作,那么成绩表的等级划分是什么情况呢?

如果你要把九十分以上的人认作是优秀,八十分以上定义成良好
七十分以上为,中等六十以上不及格,六十以下不及格
你该怎么设计程序根据一个人的分数打印他的等级呢?
或许你会选择这样的一串代码
这个代码可以清晰的表示你的意思,这样分支代码会有点搓
而switch十分适合这种,这个时候肯定会有朋友们疑惑,
case后面只能跟一个具体的常量,不能跟一个范围,那么一个一个
但并不是这样实现的,一般就行等级规划的时候都是有一个共同的特点
我们既可以根据这个特点来设计switch
}//具体的代码实现就写到这,主要是分享思路
  

前面只是浅谈了switch,接下来看两张图片帮助你深入了解switch,并认清switch和if的区别

第一次画图,可能画的有点难看,希望见谅

2.if语句结构示意图

看完这两张图后,我们来深入了解switch

  • 1.与其说switch是分支结构,不如说它是顺序结构。
  • 虽然说switch是从不同的case进入整个switch内部的,但是我们要知道,switch从case进入以后只有两种到达出口的方式,遇到break和switch语句全部结束,根据结构图也可以知道其实switch的不同语句块之间其实是从上往下排列的,与顺序结构是类似的。
  • 根据两张图我们可以清晰的发现,switch的结构类似顺序结构,而if是互相并列的分支结构,if最多只会执行其中第一个判断为真的语句块,而switch在没有break传送门情况下会一直运行进入入口后的语句块直到找到了出口。
  • switch既然属于分支语句,那么就一定存在分支的地方。switch的case语句是分支的,即入口是分支的,这一点和if是一致的,他们的入口都是分支的,并且都是在程序运行时是从上往下逐步判断是否可以这个入口进入语句块内部。

switch的高级(灵活)运用

了解了switch的具体结构及其与if的区别,接下来讲一下如何灵活的运用switch,或者在试题中如何

高级的switch使用,其实就两个要点,灵活利用break和合理对case进行适当的排序
比如刚刚的成绩划分程序,100分和九十多分是一样的,我们可以进行这样的简化
其实这种情况非常的简单,大家实际遇到或者运用的时候或许会复杂很多
但是只要找到程序的特点,并且记住switch的结构以及牢记到达出口的条件,
大家就可以很轻松的分析程序,并且在慢慢的积累中熟练的掌握。

switch同样也可以嵌套,看着或许复杂,但在培养了一定的程序的思维之后并不难理解,接下来用这个代码来帮助大家简单的理解switch的嵌套使用。

这段代码可用于判断科举时进士的前三甲
int n; //存放名次,并用于判断
default因为是最后的入口,所以可以省略break
但在还未灵活使用break和case时建议不要省略break

循环及循环的两个关键字

循环简单来说就是,重复反复的进行一些同样的操作,这个时候为了节省代码量,提高代码的美观性时,我们会用循环语句来包装那些重复的语句,而循环语句中不断执行的语句被称为循环体。

下面大家可以根据这个简单的图来理解循环

这只是其中的一种循环,为了达到美好的生活,我们不停的学习,敲代码,买彩票,直到拿到工作或者彩票中大奖,希望大家看完之后能简单理解循环。

在switch中,break是一个传送门,直接带我们走到出口,在循环中也是同样的,break会打破最近的一层循环,作为一个传送门带我们达到美好新生活而不需要判断是否中奖或者是否有offer

continue在循环中的作用是结束这次循环开始下一次循环,我更喜欢称它为闪现,那什么叫结束本次循环呢,比如我们在学习后加上一个continue,我们就不需要再敲代码和买彩票了,但和break不同,它还需要进行下一次循环,走出循环的条件只有两个就是不符合判定循环条件和break打破循环,当遇到continue时程序会直接结束本次循环,然后到达循环判定条件处来进行判定,以判断是否要进行下一次循环,并不能直接送你到达出口。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

以上所述是小编给大家介绍的C语言switch语句和if用法介绍,希望对大家有所帮助。在此也非常感谢大家对脚本之家网站的支持!

}

我要回帖

更多关于 continue能跳出if吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信