在有了前面操作符基础后,本节开始步入循环!
C是一门结构化的语言,主要分为顺序结构,选择结构,循环结构。本文主要讲解选择结构(if,switch)以及循环结构(for,while,do……while)。
if语句
if语句用来判断条件是否成立,不构成循环,其可以单独使用,也可以在其他循环语句中进行嵌套使用。
具体使用格式
if(条件表达式)
语句1;
语句2;
在表达式为真时,执行语句1,为假则直接跳过语句1,直接执行语句2;
代码块的出现
那么问题来了,在条件判断为真时,程序需要同时执行语句1和语句2,那该如何应对?
答:此时,我们则需要在if语句后面需要执行的代码拿花括号括起来,告诉程序它们为一体。当然,若条件为假,则一并跳过。
eg:判断一个数是偶数还是奇数

else的引入
但是在问题中并非全都是非黑即白的,在遇到多条件问题时,该如何去解决?
答:在遇到多条件语句时,不可能一直使用if语句来判断,因一个条件不能既满足又满足(满足a>10且a<8),这样的数不存在,故给出了else的概念,它和if来搭档解决问题。
eg:判断一个人的年龄是老年,中年,还是少年。

当然,有if不一定有else,但是没有if的存在,不可能出现else。
悬空else问题
具体看实例讲解:

此时,为了避免此类错误,可以加上花括号进行修改

总结:else总是与最近的if相匹配。
switch语句
switch语句可以通过输入值来直接跳转到相应的代码块中,其同样只有判断的功能,不能进行循环,可以与循环嵌套使用。
具体使用格式
switch(整型表达式)
{
case 整型常量表达式1:
break;
case 整型常量表达式2:
break;
……
default:
break;
}
分析
1.switch语句后面必须是一个整型常量表达式或者是一个变量或者一个字符(ASCLL码),此变量的值通过键盘输入。
2.case语句在一个switch语句中可以存在多条,但需要注意的是其后面只能跟整型常量表达式,它的值由switch后面的表达式的值来决定,上面switch语句后面不论是表达式还是一个变量都会返回一个整型值,可以通过该整型可能会返回的值来确定有几条case语句以及case语句后面的值。 格式需要注意:case与后面的内容之间有一个空格。
3.default意味着每一个表达式或者是变量返回的值都可以进去该语句,通常是在表达式或者变量返回值均不匹配时,进入default语句。
4.break语句是标志着跳出循环,break意为打破,表示直接跳出,不再执行后面的任何一条语句。与之相匹配的还有一个continue语句。通常在循环中使用,continue意为持续,表示跳过本次循环,直接跳到下一次循环中。
5.switch语句可以嵌套switch语句,但是需要注意的是,内部的break语句不会跳出外部的switch循环。
6.在switch语句中,case语句与default语句之间并无顺序关系,个别题目比较特殊除外。如下面的题目优化之后不能随意调动顺序。
实例
eg:输入数字1-7,根据实际打印工作日还是休息日。

if语句与switch语句对比
eg:输入一个整数,计算除4的余数。


while语句
while语句的格式与if语句特别类似,与之不同的是,while语句具有循环的效果。
具体使用格式
while(条件表达式)
{
语句1;
语句2;
……
}
只要while后面的条件成立,则循环就会进行,直至条件为假。
实例
eg:输入一个正整数,逆序打印每一位

do……while语句
do……while循环与while循环不同的是,do……while不论初始条件是否为真,该循环体均会被执行一次。故do……while循环的特点就是循环体至少会被执行一次。
具体使用格式
do
{
语句1;
语句2;
……
}while(条件表达式);
需要注意的就是while后面的分号不能丢。
实例
eg:输入一个正整数,判断其为几位数?(数字至少都会有一位,故特别适用do……while循环)

for循环
具体使用格式
for(条件1;条件2;条件3)
{
语句1;
语句2;
……
}
条件1:用于对变量的初始化(eg:int i= 0;)
条件2:用于对变量的结束条件判断(eg:i<10;)
条件3:用于对变量的调整(eg:i++;)
执行流程
条件1 —>条件2 —>循环语句 —>条件3 —>条件2 —>循环语句
表达式中的初始化始终只进行1次,剩下由条件2,循环语句,条件3进行循环。
需要注意是for循环中的条件之间用分号隔开,三个条件表达式不是得全部写出,可以省略,但是分号不能省(条件全部省略:for(;;)但此时会进入死循环,不必要不这样书写)。
eg:打印1-10到屏幕上

while语句与for语句对比
eg:计算1-100中3倍数之和,打印到屏幕上。


break语句以及continue语句的细分
对于三种循环结构,在continue语句中有所差异:
对于while循环以及do……while循环中,可能会跳过让变量变化的语句,从而可能会导致死循环。
但是在for循环中,让变量变化的语句写在条件表达式中,不会跳过,不会造成死循环。
在break语句中,全都是直接跳过,打破循环,三者无差别。
综合性实例
eg:找出100-200之间的素数并且打印在屏幕上

goto语句
在switch语句中有提到一个在switch语句嵌套使用时,break只能跳出内部循环,那么若多层嵌套则需要多个break语句来跳出吗?
作用分析
可以跳转至某一标签处,标签名字可以自定,当然,goto语句只能在一个函数区间内使用,不能跨函数使用。
实例分析

网硕互联帮助中心





评论前必须登录!
注册