程序的最小独立单位——语句
运算符表达式语句:不解释
赋值语句:不解释 赋值表达式和赋值语句的区别:赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方;而赋值语句则不能。
函数动用语句
函数调用后跟一个分号称为函数调用语句。其基本格式为:
函数名(参数列表);
空语句
空语句就是一个分号表示不进行任何的操作
符号语句(块语句)
表达式语句,函数调用语句和空语句可以称为简单语句或者基本语句,基本上都是一行的形式。而复合语句是有一对大括号{}包围若干条基本语句组成,所以也称为快语句。
{
语句一;
语句二;
语句三;
.............
语句n;
}
块语句有一个特殊的用处:在快语句内声明的变量仅仅在块语句内有效,在块语句外访问变量是无效的。
流程控制语句
在实际应用中,程序并不一定是按照续写的顺序来执行的,可能希望在某处设置多条路径,由程序选择一条来执行。
流程控制语句分为结构化语句和非结构化语句两部分,结构或语句包含条件语句(处理分支情况)和循环语句(处理重复情况),而非结构化语句用于一些特殊的跳转,一种“便捷通道的意思。
结构化程序设计
结构化程序设计的思想是:把一个需要结局的复杂问题分解成若干模块来解决,每个模块解决一个小问题,这种分治降低了程序设计的难度。
这里就要引用算法,所谓的算法值得就是解决问题时的一系列方法和步骤。当然平时我们不用自然语言来描述算法,要求采用一种精确,无歧义的机制。主要有两种算法表示方法,一种是伪代码 另一种就是流程图法
条件判断——分支结构
if语句
最简单的条件判断语句是if语句,其基本格式为
if(判断表达式)
{
结构体
}
判断表达式可以是简单的逻辑语句(逻辑表达式或者关系表达式),可以是多个逻辑语句的与,或,非组合,也可以是一般表达式,甚至可以是一个变量或常量。执行到if结构时,首先计算该表达式的值,当判断表达式的值不为0时,if后花括号中的结构体代码被执行,否则跳过花括号的代码.
花括号和if结构体
if结构体后的花括号非必需,if结构体后的花括号世界上是个”块语句“,如果没有花括号,则此时默认的块语句只包含紧跟在if语句后的一条语句
if(表达式)
{
语句1;
语句2;
语句3;
}
if ...else语句
标准形式为
if(表达式)
{
代码段1;
}
else
{
代码段2;
}
多分支语句和分支语句嵌套
在大多数情况下,在判断后程序并未结束,后面还有代码要执行,可以使用自由跳转语句goto,但大量使用这种太过自由的语句,会使程序一团乱麻,所以很多人反对goto语句(goto有害)
多分支if结构
分支语句嵌套
当if结构中的执行语句又是if结构,这种分支语句嵌套,分支语句的嵌套样式有很多种。
if语句允许嵌套但嵌套的层数不易太多,在实际编程时应该适当控制嵌套的层数(2~3)
switch结构
switch结构的一般形式
switch(表达式){
case(常量表达式1):
代码段1
break;
case(常量表达式2):
代码段2
break;
case(常量表达式3):
代码段3
break;
.............
case(常量表达式m):
代码段m
break;
default:
代码段m+1
break;
}
为什么叫做开关语句
如果不使用break语句,那么从与表达式的值匹配的那个case语句开始后的所有代码都会被执行,每个case都相当于一个入口开关或者时钥匙
break语句用来跳出switch结构,当执行break语句时,后面的代码被短路,不会执行。
default语句
当所有的case常量表达式与switch后表达式的值都不匹配,default被执行。但实际上default语句不是必须的,当省略default语句时,表示”缺省情况下什么也不做“,有些编译器会对缺少default情况发出警告。
default语句一般放在switch结构的最后,default语句和各个case语句的顺序可互换而不影响结果,但换了之后备幺幺忘记了break语句。
switch结构的常见错误与解决方法
虽然switch结构不能解决所有的判断问题,但是用它处理的程序结构比较清晰,可读性比较强,因此在程序书写中也经常用到。
-
用于switch结构的组成,若要描述成若干个擦色分支,若干个break语句以及可默认的default分支构成,这样的描述是错误的。break语句你是单独的一种语句,可以用来推出switch分支结构,但不是switch结构的组成部分,同样可以推出分支的语句还有goto,return语句。可恶的goto语句-^-
-
switch后面的表达式必须放在括号中,且表达式的类型任意,如果表达式的值为实型则自动转换成整型的值,然后在于case分支的常量进行比较。各个case分支的常量必须是整型常量
-
一定要在语句的分支语句中的适当位置上加上break语句,如果没有推出语句,虽然程序编译没有错误,但是程序有可能完成不了了有待解决的问题
-
switch的case和default的位置没有具体的规定,因此他们的位置任意,对语句的执行流程不会产生影响,但程序的运行结果可能会不同。