前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍C语言中流程控制的三种结构:顺序结构、分支结构、循环结构

一、顺序结构

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行

二、分支结构

分支结构的程序设计是依据一定的条件选择执行的路径,而不是严格按照语句出现的物理顺序

1, if分支

  格式一:

    if(表达式){
语句;
}

  执行流程:

    1、当程序执行到if语句时,首先判断表达式的真假;若表达式的值为真(非0),则执行大括号里面的语句;若表达式的值为假(0),则执行大括号后面的语句

  格式二:

    if(表达式) {
语句1;
} else {
语句2;
}    

  执行流程:

    1、当程序执行到if-else语句时,首先判断表达式的真假;若表达式的值为真(非0),则执行语句1,若表达式的值为假,则执行语句2

  格式三:

    if(表达式1) {
语句1;
} else if(表达式2) {
语句2;
} else if(表达式n) {
语句n;
} else {
语句m;
}

  执行流程:

    1、当程序执行到if语句时,首先判断表达式1的真假;若表达式1的值为真(非0),则执行语句1;若表达式1的值为假(0),判断表达式2的真假

    2、若表达式2的值为真(非0),则执行语句2,若表达式2的值为假(0),判断表达式3的真假,依次类推

    3、若若表达式n的值为假(0),则会执行else里面的语句m

2, switch分支

  格式四:

    switch (整型表达式) {
case 整型常量1:
语句块1;
case 整型常量2:
语句块2;
case 整型常量3:
语句块3;
...
default:
语句块n;
}

  执行流程:

    1、首先判断整型表达式的值,然后用值来匹配case后面的整型常量,匹配到整型常量1则执行语句1,匹配到整型常量2则执行语句2

    2、如果都没有匹配到,则执行default中的语句块n

三、循环结构

循环结构的程序设计是在合适的条件判断下,重复做某些操作,只要有重复操作我们就可以使用循环,具体代码体现在重复执行相同的语句

循环结构的三个要素:循环变量、循环体和循环终止条件

C语言中提供四种循环:goto循环、while循环、do…while循环和for循环,不提倡使用goto语句

1, goto循环

    int i = 0;
LABEL:/*标签*/
if (i<100/*表达式*/) {
i++;
printf("%d\n",i);/*语句块*/
goto LABEL;/*跳转标签*/
}

  执行过程:

  1、首先判断表达式是否成立,如果不成立,跳出/结束整个循环,如果成立那么执行语句块的内容,语句块的内容执行完之后

  2、跳到goto后面指定的标签处,再次执行判断表达式是否成立

  3、如果成立继续执行语句块内容,依次类推直到表达式不成立跳出goto循环

2, while循环

    while (1/*表达式*/) {
printf("%d\n",1);/*语句块*/
}

  执行过程:

  1、首先判断表达式是否成立,如果不成立,跳出/结束整个循环,如果成立那么执行语句块的内容,语句块的内容执行完之后

  2、再次判断表达式是否成立,如果成立继续执行语句块内容,依次类推直到表达式不成立跳出循环

3, do...while循环

   do {
printf("%d\n",1);/*语句块*/
} while(1/*表达式*/);

  执行过程:

  1、程序直接执行语句块的内容一次(和while的区别)

  2、然后判断表达式是否成立,如果不成立,跳出/结束整个循环,如果成立那么执行语句块的内容,语句块的内容执行完之后

  3、再次判断表达式是否成立,如果成立继续执行语句块内容,依次类推直到表达式不成立跳出循环

4, for循环

    for (int i=0/*初始化语句*/; i<100/*表达式2*/; i++/*表达式3*/) {
printf("%d\n",i);/*语句块 写重复操作 可以是任何的语句;普通语句/if的所有语句结构/switch case 语句/循环语句*/
}

  执行过程:  (初始化语句往往用于初始化循环的一些变量)

  1、首先执行初始化语句,(初始化语句,在整个for循环开始的时候执行一次)

  2、判断表达式2是否成立,如果表达式成立(表达式的值是非0值),那么执行语句块的内容,执行完语句块跳到第3步。否则(表达式不成立)那么结束整个for循环(跳出整个for循环)

  3、执行表达式3,接着跳到第2步

5, 循环的拓展

1、关键字 break

  break  跳出包含break的循环

  break  可以出现在switch和循环

2、关键字 continue

  continue  只能用于循环

  continue  结束本次循环,继续下次循环

3、循环的特殊写法

  跳出里层循环

    for (;;) {
for (int i = 0;i<100;) {
break;//跳出里面的for循环
}
}

  死循环

    for(;;) {
/*语句块*/
}
while (1) {
/*语句块*/
}

  等同于while的循环

     for(;表达式;) {
语句块;
}
while (表达式) {
语句块;
}

C 碎片四 流程控制的更多相关文章

  1. java 基础知识四 流程控制

    java   基础知识四 流程控制 Java流程控制包括顺序控制.条件控制和循环控制 顺序控制就是逐条执行 有if和switch两个分支 循环控制就是 又称为回路控制,根据循环初始条件和终结要求,执行 ...

  2. Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)

    一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应 ...

  3. Python第四天 流程控制 if else条件判断 for循环 while循环

    Python第四天   流程控制   if else条件判断   for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Python第二天 ...

  4. 016PHP基础知识——流程控制(四)

    <?php /** * 流程控制(四) do...while * do{ 代码段 * }while(){ * } * 特点:最少会执行一次代码段 */ /*$i=5; do{ echo $i; ...

  5. Excel VBA入门(四)流程控制2-循环控制

    所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...

  6. js的数据类型、函数、流程控制及变量的四种声明方式

    运算符 基本运算符 加 + 减 - 乘 * 除 / 取余 % 自增 ++ eg: 1++ 或 ++1 自减 -- eg: 1-- 或 --1 注:++或--写在前面表示优先级最高,先进行自增或者自减 ...

  7. javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互

    1.运算符 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  8. 基础补充(四)——流程控制之if、while、for,break与continue

     流程控制 一.流程控制之if……else…… if 条件1: 缩进的代码块 elif 条件2: 缩进的代码块 elif 条件3: 缩进的代码块 ...... else: 缩进的代码块 二.流程控制之 ...

  9. [Java入门笔记] Java语言基础(四):流程控制

    流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...

随机推荐

  1. [hdu1402]A * B Problem Plus(FFT模板题)

    解题关键:快速傅里叶变换fft练习. 关于结果多项式长度的确定,首先将短多项式扩展为长多项式,然后扩展为两倍. #include<cstdio> #include<cstring&g ...

  2. JavaScript中函数作为值

    function myfunc() { // .. } 这是个函数,这样理解, myfunc只是外层作用域的一个变量,指向刚刚声明的function. 也就是说,function本身就是一个值, 就像 ...

  3. 17. PHP+Mysql注入防护与绕过

    黑名单关键字过滤与绕过 过滤关键字and.or PHP匹配函数代码如下: preg_match('/(and|or)/i', $id) 如何Bypass,过滤注入测试语句: 1 or 1 = 1   ...

  4. SQL查询 若为空显示默认值

    COALESCE(a.end_,now()) SELECT COALESCE(NULL,NULL,3,4,5) FROM

  5. [CentOS7] ssh免密登录 scp免密传输

    我们采用RSA非对称加密算法,原理: 如果,A要和B通讯,则: (1). A通过RSA算法生成公钥(.pub)和私钥(公钥用于加密,私钥用于解密) (2). B将A的公钥文件(.pub)内容加入到au ...

  6. 通过增删改查对比Array,Map,Set,Object的使用成本和实现方式

    1.Array 和 Map 对比 { // array and map 增 查 改 删 let map = new Map(); let arr = []; // 增 map.set('a', 1); ...

  7. Java基础笔记(十)—— 数组

    数组是具有相同类型的数据的集合,是一种引用数据类型,一般具有固定的长度,并且在内存中占据连续的空间. 数组声明:数据类型[ ] 数组名;             数据类型 数组名[ ]; 如:int[ ...

  8. 《SQL 进阶教程》 自连接排序

    子查询所做的,是计算出价格比自己高的记录的条数并将其作为自己的位次 -- 自连接实现排序功能SELECT P1.name,P1.price,(SELECT COUNT(P2.price)FROM Pr ...

  9. 解决Nginx启动失败

    一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...

  10. Keepalived + Nginx + Tomcat 高可用负载均衡架构

    环境: 1.centos7.3 2.虚拟ip:192.168.217.200 3.192.168.217.11.192.168.217.12上分别部署Nginx Keepalived Tomcat并进 ...