C语言中常见的几种流程控制语句
1.goto语句
goto语句是一种无条件转移语句,goto 语句的使用格式为:
goto 语句标号;
其中语句标号是一个有效的标识符,这个标识符加上一个 ":" 一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句;
另外语句标号必须与goto语句同处于一个函数中,但可以不在一个循环层中;通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行;如下例子:
#include <stdio.h> int main(void){ int i,sum=0; i=1; loop: if(i<=100){ sum=sum+i; i++; goto loop; } printf("%d\n",sum); return 0; }
2.if语句
if使用格式为:
if(condition1) {} else if(condition2) {} else if(condition3) ... else {}
除此之外,if语句之间可以嵌套,如下所示:
3.switch语句
switch的语法格式为:
switch (表达式) { case 常量1:语句1 case 常量2:语句2 ... default: 语句n+1 }
注意:
1)switch后面括号内的表达式,其值类型应该为整数类型,包括字符型;
2)可以没有default语句,此时流程转到switch语句的下一条语句执行;
3)每一个分支语句后一般都要加一条break语句,用来跳出switch语句块,最后一个分支可以不加;如将上面的例子改为:
此时的执行结果为:
这是因为分支后的常量表达式只会匹配一次,匹配成功后就会执行该分支后的所有语句,如果不加break,则会将后面所有分支的语句执行完!!
4)多个 case 分支可以共用一组执行语句,如下:
case 'A': case 'B': { printf.... }
4.while循环
语法格式:
while (表达式) { 语句 }
5.do...while循环
语法格式:
do { 语句 }while(表达式);
与while不同的是,do..while的循环体至少会被执行一次
注意,在 do-while 结构中,while 括号后的分号不能?G。
do-while 循环的执行流程是:首先无条件地执行一次循环体,然后再根据循环控制表达式的值来判断是否继续执行循环体。若为真,则继续执行;若为假,则停止执行,退出 do-while 循环。也就是说,do-while 循环至少执行一次循环体。
do-while 循环和 while 循环的主要差别是:前者至少执行一次循环体,后者有可能一次也不执行循环体。
6.for循环
语法格式:
for ([表达式1];[表达式2];[表达式3]) 语句
C语言for循环的流程图
下面来看看看如何使用for循环来实现打印一个连续数据的简单程序。创建一个源文件:for-loop.c,其代码如下所示 -
#include <stdio.h> void main() { int i = 0; for (i = 1;i <= 10;i++) { printf("%d \n", i); } }
执行上面示例代码,得到以下结果 -
1
2
3
4
5
6
7
8
9
10
break和continue
break用于终止当前层次的循环,而continue用于结束本次循环,转入下一次循环
break 语句很重要,用得非常多,初学者一定要掌握。continue 语句虽然没有 break 语句用得多,但也经常用到,而且不可或缺,需要用到 continue 的时候其他语句是无法替代的。
前面已经介绍过 break 语句,它不仅可以跳出“循环体”,还可以跳出 switch。但事实上,break 也只能用于这两种情况。break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。
不管是 for 循环,还是 while 循环,或者是 do…while 循环,都可以用 break 跳出来,但是 break 只能跳出一层循环。当有多层循环嵌套的时候,break只能跳出“包裹”它的最里面的那一层循环,无法一次跳出所有循环。
同样,在多层 switch 嵌套的程序中,break 也只能跳出其所在的距离它最近的 switch。但多层 switch 嵌套实在是少见。
continue 的用法十分简单,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。
总结
上一篇:c++难以发现的bug(有趣)
栏 目:C代码
下一篇:手把手带你搞懂C语言指针
本文标题:C语言中常见的几种流程控制语句
本文地址:http://www.codeinn.net/misctech/186047.html