【编程基础】C语言循环语句解析

循环语句是一种很重要的结构,这种结构的特点就是在某种条件下,会重复循环执行某一段代码,直到条件不成立为止。这里的条件称为循环条件,重复执行的那段代码称为循环体。

其实不只是C语言有循环语句,几乎所有语言都有循环语句,大家可以想象要做同样一件事情十万次,要是没有循环会多么痛苦!

C语言可以构成循环语句的有如下几种:

1、goto语句和if语句组成; 2、while语句; 3、do while语句; 4、for语句;

goto-if循环语句

goto和if组成的语句最为灵活,但是也最没有结构化,当出现复杂情况时不好维护,因此在实际代码中很少出现,也不鼓励使用,几乎用这种组成的循环都可以用后面三种完成。比如计算1到100之和:

int i = 1, sum = 0; loop: if (i <= 100) { sum += i; i++; goto loop: }

while循环语句

while语句一般形式是:

while (逻辑表达式) { ... }

执行时首先执行逻辑表达式,如果表达式为真值,则执行括号内的循环体,如果循环体只有一条语句,可以不加大括号。执行一次循环体后,再次判断逻辑表达式是否为真,并重复这个过程,直到某次逻辑表达式为假时才会直接跳到循环体之后的语句继续往下执行。

在编写一个任务函数时会常常用这种形式的while循环,比如某一个永久执行的线程函数体可能有如下的形式:

while (1) { ... }

用while改写上面的求和代码如下:

int i = 1, sum = 0; while (i++ <= 100) { sum += i; }

do while循环语句

这种循环的一般形式为:

do { ... } while (逻辑表达式);

这种循环跟上面基本一样,唯一的差别就是首先无条件的先执行一次循环体后再判断逻辑表达式的值,然后根据这个值决定是否继续循环体,真则继续,假则不再循环,接着执行后面的语句。用do while语句改写上面的求和代码如下:

int i = 1, sum = 0; do { sum += i; } while (i++ <= 100);

for循环语句

for语句的一般形式为:

for (表达式1; 逻辑表达式2; 表达式3) { ... }

它的执行过程如下: 1> 求解表达式1。 2> 求解逻辑表达式2,若为真值,则执行循环体,然后进入第3步;若其值为假,则跳转到第5步。 3> 求解表达式3。 4> 转回上面第2步继续执行。 5> 执行for语句循环体下面的语句。

由于表达式1只是在开始执行一次,因此常常用于初始化一些变量。表达式2就是控制是否继续循环的条件,表达式3一般是循环中的一些数据变化和数据增量。三个表达式都可以不要,但必须保留分号(;)作为语法错误检查。但是如果表达式2没有设置,则默认为永远是真值。

用for语句修改上面的求和代码如下:

int i; sum; for (i=1,sum=0; i<=100; i++) { sum += i; }

这个也可以跟简单写成如下的样子: for (i=1,sum=0; i<=100; sum+=i,i++); 这里把求和部分也放到表达式3里面去了。

C语言的循环语句一共就这些,相信把每一个都仔细理解了,还是比较好掌握。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-09-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

Python函数之形参与实参

各位小伙伴,大家晚上好 今天我们来一起探讨一下函数的另外一个重要概念 “形参”(xing2,can1)与“实参”(shi2,can1) 很多朋友可能第一次听到这...

2068
来自专栏锦小年的博客

python学习笔记6.1-类的认识

前言 都在说,在Python中“无所不对象”,是因为Python是一个面向对象的动态编程语言,因而它具有:多态(Polymorphism),继承(Inherit...

1845
来自专栏人工智能LeadAI

为什么算法容易忘记之插入排序

在学习常用的排序算法时,常有这样的感觉,一看就懂,过眼就忘。原因在于没有将排序的基本思想与代码中各个循环控制变量的意义联系起来进行理解记忆。 插入排序 首先,我...

3385
来自专栏Python

数据类型总结(一)(数字,字符串)

数据类型总结 数字 字符串 列表 元组 字典 按照存值个数: 1个:数字,字符串 多个:列表,元组,字典...

1777
来自专栏老马说编程

(53) 剖析Collections - 算法 / 计算机程序的思维逻辑

之前几节介绍了各种具体容器类和抽象容器类,上节我们提到,Java中有一个类Collections,提供了很多针对容器接口的通用功能,这些功能都是以静态方法的方式...

1989
来自专栏Python爬虫实战

Python数据类型之元组

元组和列表有一个很重要的区别,那就是元组是不可改变的,定义了元组里面的元素就不能随便改动了。 由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的。

431
来自专栏Linyb极客之路

2016 腾讯软件开发面试题(部分)

2016 腾讯软件开发面试题(不定项选择题【1-12】) 1、已知一棵二叉树,如果先序遍历的节点顺序是: ADCEFGHB ,中序遍历是: CDFEGHAB ,...

3558
来自专栏java学习

第3天的练习

大家把答案在留言区留下来 1:常见的算术运算符有哪些? +运算符的作用有哪些? 除法和取余的区别? ++和--的使用规则? 2:常见的赋值运算符有哪...

3107
来自专栏C/C++基础

C/C++ const

const是C语言的关键字,经C++扩充,功能变得强大,用法复杂。const用于定义一个常变量(只读变量)。当const与指针、引用、函数等结合起来使用时,情况...

821
来自专栏静晴轩

lua表排序

Lua作为一种很强大且轻量级脚本语言的存在,对于掌握其几乎无所不能的Table(其实就是一个Key Value的数据结构,它很像Javascript中的Obje...

35111

扫描关注云+社区