前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍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. 报错apachectl -t

    httpd: apr_sockaddr_info_get() failed for wwwhttpd: Could not reliably determine the server's fully ...

  2. 分页sql汇总

    1.oracle数据库分页 select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>= ...

  3. 服务器修改密码cmd

    net user  账号  要修改的密码

  4. sharepoint Foundation 2013 error

    安装必须软件时提示以下错误 错误提示日志: 015-05-28 10:40:25 - Request for install time of 应用程序服务器角色.Web 服务器(IIS)角色2015- ...

  5. 由hibernate配置cascade而导致的软件错误,并分析解决此问题的过程

    本文与上一篇文章的软件背景相同,是一个安装部署的工具,这个工具会生成整套系统部署用的xml文件. 这个工具中有一个“克隆”功能,当安装包有新版本后,可以克隆之前的xml版本,并在其基础上做少许修改来适 ...

  6. wpf label下划线不显示的问题

    突然发现label设置content的值为字符串时,如果字符串中包含_的话,在展示出来时下划线就不见了,百度了一下,发现了问题根源,说的label的ContentPresenter默认将下划线处理成快 ...

  7. 17、GATK使用简介 Part2/2

    转载:http://blog.sina.com.cn/s/blog_6721167201018jik.html Change Logs: 13/01/12: 增加了一篇文献,外加一些无聊的修改.12/ ...

  8. p2320&bzoj1192 鬼谷子的钱袋

    传送门(洛谷) 传送门(bzoj) 题目 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政.有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一 ...

  9. Linus与陈庆

    Linus 1969年末,李纳斯出生于芬兰的赫尔辛基市,算是赶上了60后的尾巴.小时候他是个其貌不扬的孩子,除了一个鼻子长的「富丽堂皇」之外乏善可陈.他为了让鼻子看上去小一些,经常戴上眼镜就不愿意摘下 ...

  10. RedisUtil(未完,持续更新中....)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...