C 碎片四 流程控制
前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍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 碎片四 流程控制的更多相关文章
- java 基础知识四 流程控制
java 基础知识四 流程控制 Java流程控制包括顺序控制.条件控制和循环控制 顺序控制就是逐条执行 有if和switch两个分支 循环控制就是 又称为回路控制,根据循环初始条件和终结要求,执行 ...
- Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)
一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应 ...
- Python第四天 流程控制 if else条件判断 for循环 while循环
Python第四天 流程控制 if else条件判断 for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Python第二天 ...
- 016PHP基础知识——流程控制(四)
<?php /** * 流程控制(四) do...while * do{ 代码段 * }while(){ * } * 特点:最少会执行一次代码段 */ /*$i=5; do{ echo $i; ...
- Excel VBA入门(四)流程控制2-循环控制
所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...
- js的数据类型、函数、流程控制及变量的四种声明方式
运算符 基本运算符 加 + 减 - 乘 * 除 / 取余 % 自增 ++ eg: 1++ 或 ++1 自减 -- eg: 1-- 或 --1 注:++或--写在前面表示优先级最高,先进行自增或者自减 ...
- javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互
1.运算符 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...
- 基础补充(四)——流程控制之if、while、for,break与continue
流程控制 一.流程控制之if……else…… if 条件1: 缩进的代码块 elif 条件2: 缩进的代码块 elif 条件3: 缩进的代码块 ...... else: 缩进的代码块 二.流程控制之 ...
- [Java入门笔记] Java语言基础(四):流程控制
流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...
随机推荐
- C++类和对象的一个简单的实例
题目:找出一个整形数组中的元素的最大值 下面,我们用类和对象的方法来做. #include<iostream> using namespace std; class Array_max{ ...
- rlwrap:让控制台程序使用input.rc里的设置
习惯了vi模式,在bash里配置input.rc可以使平时命令行操作都使用vi习惯,翻页和跳动光标都很方便 但是当运行一些交互式程序时,比如redis-cli,lua等,它们却不按input.rc的配 ...
- 28、cd-hit去除冗余序列
转载:http://blog.sina.com.cn/s/blog_670445240101nidy.html 网址:http://cd-hit.org :http://www.bioinformat ...
- C#使用Json.NET解析Json
本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据,我简单上网搜索了一下,基本上有两种操作 Json ...
- hdu1081
#include<iostream> using namespace std; int GetMaxNum(int a[],int n) //求最大字段和 { int i,sum=0,ma ...
- HTML5 & CSS3编程入门经典 ((美)Rob Larsen) pdf扫描版
HTML和CSS是构建网页所需要了解的两种核心编程语言,拉尔森编著的这本<HTML5&CSS3编程入门经典>详细介绍了这两种语言. <HTML5&CSS3编程入门经典 ...
- restfull知识点
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......).因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致API ...
- [CentOS7] firewalld重启失败 Failed to start firewalld - dynamic firewall daemon.
错误信息: Failed to start firewalld - dynamic firewall daemon. 如图: 解决方法: 也就是kernel不支持现在的firewall防火墙的某些模块 ...
- Go:表驱动单元测试
Go:表驱动单元测试 单元测试相当的重要,这几天实习由于单元测试没写好所以被骂了emmm 痛定思痛,立刻上网学习了一下,总算达到了预期的效果,所以写一篇文章记录一下 首先安装gotests $go g ...
- (PHP)redis Set(集合)操作
/** * * Set操作 * 集合命令 * 保证数据的唯一 * 不保证顺序 * */ //将一个元素加入集合,已经存在集合中的元素则忽略.若集合不存在则先创建,若key不是集合类型则返回false, ...