最近学习了c语言分支和循环语句,在此进行一些感悟和总结。
分支循环语句主要有while循环、for循环、switch语句、do-while循环、break和continue语句、goto语句,我们在这一篇中主要提到前3个结构。
1.while( )循环语句
基本语法结构:while( 表达式 )
语句 ;// 如果循环体想包含更多的语句,可以加上⼤括号
执行流程:
while循环语句是一种没有规定次数的循环语句,也就是说,在while后判别式为真的情况下,“{ }”内的语句会被无限次循环,这也是它与for的重要区别。而且需要注意,while语句结构中的判断表达式部分只区分“0”或“非0”。另外,由于进入while语句之后会先进行判断,而若判断值非0则循环结束,所以每一个while()循环在执行的时候判断表达式的执行次数都会比语句的执行次数多一次。
在简单的介绍了while循环的基本信息之后,我在这里举一个简单的while循环示例:
那么我们来分析一下这道题目。首先它要求我们输入一个正的整数,那我们开头的代码就应该是:
之后我们考虑如何逆序打印这个整数:
我们知道,如果想要求一个整数的个位,就可以对其模10(n%10),那么余数就是其个位数字;以及,如果想要删掉一个数的个位,我们只需要对其除10(n/10),那么它的十位就会变为个位,而原来的个位即会消失。综上所述,我们的代码即可以如下实现:
2.for语句
基本语法结构:for( 表达式 1; 表达式 2; 表达式 3)
语句; // 如果循环体想包含更多的语句,可以加上⼤括号
P.S. 表达式1⽤于循环变量的初始化;表达式2⽤于循环结束条件的判断;表达式3⽤于循环变量的调整
执行流程:
这里需要注意的是,一旦进入for循环,无论是否执行后续语句,表达式1是一定会被执行的,但在整个循环中只执行1次,若循环则是表达式2、语句、表达式3在循环,且for循环中表达式2的判断是区分“0”还是“非0”。
由于for循环比较基础,这里就不再穿插例题。
while循环和for循环的对⽐:
for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是for的三部分⾮常集中,便于代码的维护,⽽如果代码较多的时候while循环形式上就过于分散,而for循环则要更优⼀些。
3.switch语句
switch语句是⼀种特殊形式的if...else结构,⽤于判断条件有多个结果的情况。它把多重 else if 改成更易⽤、可读性更好的形式。
1 switch (expression) {
2 case value1: statement
3 case value2: statement
4 default: statement
5 }
上⾯代码中,根据表达式expression不同的值,执⾏相应的case分支。如果找不到对应的值,就执⾏ default 分⽀。
注:switch 后的 expression 必须是整型表达式;case 后的值,必须是整形常量表达式。
if语句和switch语句的对⽐:
e.g.输⼊任意⼀个整数值,计算除3之后的余数
ifelse:
switch改写:
上述的代码中,我们要注意的点有:
1. case 和后边的数字之间必须有空格
2. 每⼀个 case 语句中的代码执⾏完成后,需要加上break ,才能跳出这个switch语句。
关于default:
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
后续内容详见下一篇:关于C语言分支和循环语句的一些见解(2)。