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# 处理Json
下面是JSON对象转换为字符串 public static string ToJson(object obj) { try { JavaScriptSerializer serializer = ne ...
- Eclipse/MyEclipse下如何Maven管理多个Mapreduce程序?(企业级水平)
不多说,直接上干货! 如何在Maven官网下载历史版本 Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) Eclipse下Maven新建Web项目index.jsp报 ...
- Servlet编程实例
---------------siwuxie095 登录实例: 从 login.jsp 提交登录信息到 LoginServlet,在 LoginServlet 中打印登录信息 工程结构目录如下: Lo ...
- 利用Hadoop自带example实现wordCount
上次虽然把环境搭好了,但是实际运行起来一堆错误,下面简述一下踩的坑. 1.hadoop fs -put上传文件失败,WARN org.apache.hadoop.hdfs.server.datanod ...
- 20169219《linux内核原理与分析》第七周作业
网易云课堂学习 把write系统调用加入到MenuOS里面 我在试验过程中在MenuOS里加入了time.time-asm.write和write-asm命令.以time和time-asm为例, 步骤 ...
- System.Threading.Thread的使用及传递参数等总结
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- Log4NET的日志框架的使用
日志信息分类 1.等级由低到高:debug<info<warn<Error<Fatal; 2.区别: debug 级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系 ...
- 聚类算法(二)--BIRCH
BIRCH (balanced iterative reducing and clustering using hierarchies)(名字太长不用管了) 无监督,适合大样本的聚类方法.大多数情况只 ...
- go语言web开发框架_Iris框架讲解(五)MVC包使用
在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...
- 788B(dfs+xjb)
题目链接: http://codeforces.com/problemset/problem/788/B 题意: 给出一个有 n 个顶点和 m 条边的图(没有重边,可能有自环), 可以从中任意一个顶点 ...