找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2067|回复: 0
打印 上一主题 下一主题
收起左侧

C语言教程(3)-控制语句

[复制链接]
跳转到指定楼层
楼主
ID:99082 发表于 2015-12-10 03:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
--C控制语句总结:


一种完备的编程语言应该为程序员提供以下三种程序流:

1.顺序执行语句序列(顺序);

2.在满足某个条件之下反复执行一个语句序列(循环);

3.通过进行一个判断在两个可选的语句序列之间选择执行(分支);

举个例子:

大家静下心来想想,其实在日常生活中,我们在安排自己的行为活动时大致也就这三类情况。比如我们坐地铁,(顺序开始:)先要走出校门,然后找地铁站,然后去售票机投币买票。(循环开始:)发现到黑龙江大学票价是三元,那么在我投币数小于三元的情况下我就要一直往里投一元硬币,投了三次(此时钱数等于三元,而不是小于三元啦),售票机就吐票了。(判断开始:)到了上车时我还要判断坐往哪个方向开的车吧,有两个方向:一个开往哈东站,一个开往哈南站。在我要去黑大的情况下,我当然是坐开往哈南站的。是不是很佩服当年编写这些编程语言的计算机工程师们对生活行为的强大归纳总结能力啊。

顺序执行语句顺序(顺序)相信大家都比较好理解,就是一句接着一句的执行呗。循环控制语句主要涉及的控制型关键字:while、for、do while。分支控制循环语句主要涉及的控制型关键字:if else、switch break。


--while、for常用循环语句:


--while语句:

如果大家自己写过程序,即使是简单的小段程序也会接触到while。大家在学习单片机没有移植系统时(也就是裸机跑程序时)其实程序主体就是在一个while(1){程序主体};的死循环里不断的跑,遇到中断时出去执行完中断然后回到程序中,也就是前台、后台的概念。一般复杂和实时性要求不高的小系统很适合这样的程序,比如微波炉、电话机、玩具等等。

while(1){};怎么就死循环了呢。先来介绍介绍,一般形式为:

while(表达式){执行语句};

while语句是先判断后执行,执行语句部分被称为循环体。若表达式为真,就执行循环体。若表达式为假,可能就一次都不执行

什么是真呢?对于C语言来说,一个真表达式的值为1,一个假表达式为0。前面所得死循环就会永远的循环下去,因为1永远为真:

while(1)

{

循环体;

}

还有哪些是真?表达式为数值:其实可以说所有非零值都会被认为是真,只有0被认为是假。甚至负数也会被认为是真。

也就是说while(3){循环体;}while(-1){循环体;}也都是死循环。

表达式为语句时:表达式的形式是多样的,要具体判断表达式说的是不是真,是真执行。

下边有两段while循环语句

/*while语句1*/

int i=2;

while(i==2)

{

循环体;

}

/*while语句2*/

int a=10;

while(a-->0)

{

循环体;

}

语句1会进入循环,因为i等于2这件事是真的,并且会一直等于下去,所以循环体也会一直循环下去。语句2会进入循环,因为a=10>0这件事也是真的,但当a不断自己减1(“--”为运算符,表示自己减小1,即a=a-1;)当a=0时,a=0>0这件事就是假了,所以就会跳出循环体。

--for语句:

for循环把所有的三种动作(初始化、检测、更新)都放在一起。它的一般形式为:

for(<表达式1>;<表达式2>;<表达式3>)语句;

表达式1:赋值表达式。

表达式2:关系表达式或逻辑表达式,是循环的控制条件。

表达式3:一般为赋值表达式,使控制变量增大或减小。

其实对于表达式1、2、3和后面的执行语句当不使用时都是可以省略的,但是那两个分号;是不能省略的。

下边列举for语句几种常用的变形:

1.for( ; ;)语句;

这是一个死循环,循环体会永远的执行下去。

2.for( ;表达式2;表达式3)语句;

可见这种情况没有对初始值进行赋值,所以当初始值不是已知固定的,而是由前边的程序运算得到的,应该使用这种形式。例如:

i=a-3;

for( ;i<k;i++){循环体}

3.for(表达式1;表达式2;)语句;

一般在控制变量在循环体里有更新的时候使用这种形式。

for(i=1;i<88)

{

i=i*4+5;

}

4.for(表达式1;表达式2;表达式3);

如果所有的工作都在表达式1、2、3中完成了,那就没必要非要加个语句。直接以分号潇洒的结尾吧。

5.for(i=1,j=a;i<j;i++,j--)语句;

表达式1和表达式3都可以有一项或多项,多项时用逗号隔开。


--if常用分支语句:


在C语言里,if是控制型关键字。下边列举总能用到的if...else...条件判断语句的变形形式。

1./*只有if判断没有else的情况*/

简单形式的if语句可以选择执行或忽略一个动作。

if(条件表达式)

{

执行表达式1;

执行表达式2;

...

}

2./*既有if还有else的情况*/

if else语句使程序能在两个动作之间进行选择。

if(条件表达式)

{

执行表达式1;

执行表达式2;

...

}else{


执行表达式3;

执行表达式4;

...

}

3./*有多个if...else...嵌套的情况*/

else if实际上是一种变形,else if相当于另一个if else语句的else语句部分。

if(条件表达式1)

{

执行表达式1;

执行表达式2;

...

}else if(条件表达式2)

{


执行表达式3;

执行表达式4;

...

}else{


执行表达式5;

执行表达式6;

...

}


这次在文章里多多少少涉及到了点运算符,如--、==、<之类的,大家可以先自己看看。下周就开始运算符相关的内容了,坚持、奋斗。


以下是本系列教程文章列表:欢迎大家踊跃讨论,有问题可在51黑论坛回帖提出.


C语言基础教程(1):http://www.51hei.com/bbs/dpj-41177-1.html
C语言教程(2)-关键字 变量:http://www.51hei.com/bbs/dpj-41178-1.html
C语言教程(3)-控制语句:http://www.51hei.com/bbs/dpj-41179-1.html
C语言教程(4)-运算符:http://www.51hei.com/bbs/dpj-41180-1.html
C语言教程(5)-函数:http://www.51hei.com/bbs/dpj-41181-1.html
C语言教程(6)-数组与函数指针:http://www.51hei.com/bbs/dpj-41182-1.html

51单片机教程:http://www.51hei.com/bbs/mcu-xuexi-1.html
STM32教程:http://www.51hei.com/bbs/dpj-41167-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表