当前位置:文档之家› C51 流程控制语句

C51 流程控制语句

• (3) 在if 语句的三种形式中,所有的语句应为单个语句,如果要想 在满足条件时执行一组(多个)语句,则必须把这一组语句用“{}” 括起来组成一个复合语句。但要注意的是在“}”之后不能再加分号。
上一页 下一页 返回
4.2 选 择 结 构
• (4) if 语句的嵌套。 • 当if 语句中的执行语句又是if 语句时,则构成了if 语句嵌套的情形。
• 数组是一组具有固定数目和相同类型成分分量的有序集合。 • 1. 一维数组 • 定义:类型说明符 数组名[整型表达式] • 2. 二维数组 • 定义:类型说明符 数组名[常量表达式][常量表达式] • 3. 字符数组 • 定义方法同上。 • 字符数组中'' '' 括起来的一串字符,称为字符串常量。C 语言编译器
上一页 下一页 返回
4.3 循 环 结 构
• while(表达式); • 其中语句是循环体,表达式是循环条件。 • do-while 语句的语义是:先执行循环体语句一次,再判别表达式的
值,若为真(非0)则 • 继续循环,否则终止循环。 • do-while 语句和while 语句的区别在于do-while 是先执行后判断,
• 4.2.2 switch-case 语句
• C51 语言还提供了另一种用于多分支选择的switch 语句,其一般形 式为:
• switch(表达式) •{ • case 常量表达式1: 语句1;
上一页 下一页 返回
4.2 选 择 结 构
• case 常量表达式2: 语句2; •… • case 常量表达式n: 语句n; • default : 语句n + 1; •} • 其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,
数main( )中,最后在主函数main( )中结束整个C 程序的运行。 • 1. 函数的分类 • C 语言函数分为主函数main( )和普通函数两种。普通函数从不同角
是否结束还是继续,修改指针和变量是为下一次循环判断做准备,当 符合结束条件时,结束循环;否则,继续循环。 • (4) 结束:存放结果或做其他处理。 • 在循环程序中,有两种常用的控制循环次数的方法:一种是循环次数 已知,这时把循环次数作为循环计算器的初值,当计数器的值加满或 减为0 时,即结束循环;否则,继续循环。
4.2 选 择 结 构
• 2. 第二种形式 • if(表达式) • 语句1; • else • 语句2; • 其语义是:如果表达式的值为真,则执行语句A,否则执行语句B。
其过程如图4.3 所示。
上一页 下一页 返回
4.2 选 择 结 构
• 3. 第三种形式(if-else-if 形式) • 前两种形式的if 语句一般都用于两个分支的情况。当有多个分支选择
第4 章 C51 流程控制语句
• 4.1 顺序结构 • 4.2 选择结构 • 4.3 循环结构 • 4.4 C51 数组 • 4.5 函数 • 4.6 程序设计
返回
4.1 顺 序 结 构
• 顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由 低地址向高地址顺序执行指令代码。如图4.1 所示,程序先执行A 操 作,再执行B 操作,两者是顺序执行的关系。
下一页 返回
4.2 选 择 结 构
•{ • int a,b,max; • printf("\n input two numbers: "); • scanf("%d%d",&a,&b); • max=a; • if(max<b)max=b; • printf("max=%d",max); •}
上一页 下一页 返回
时,可采用if-else-if语句,其一般形式为: • if(表达式1) • 语句1; • else if(表达式2) • 语句2; • else if(表达式3) • 语句3; •…
上一页 下一页返回
4.2 选 择 结 构
• else if(表达式m) • 语句m; • else • 语句n; • 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其到
下一页 返回
4.3 循 环 结 构
• 循环程序一般包括以下4 个部分: • (1) 初始化:置循环初值,即设置循环开始的状态,比如设置地址
指针、设定工作寄存器、设定循环次数等。 • (2) 循环体:这是要重复执行的程序段,是循环结构的基本部分。 • (3) 循环控制:循环控制包括修改指针、修改控制变量和判断循环
下一页 返回
4.1 顺 序 结 构
• DBYTE[0x30]=0x97; • a[0]=0x97; • a[2]=a[0]; • a[1]=a[1]>>4; • a[1]=a[1]*10; • a[2]=a[2]&0x0F; • a[1]=a[1] + a[2]; • DBYTE[0x31]=a[1]; • while (1); •}
其一般形式可表示如下: • if(表达式) • if 语句; • 或者为: • if(表达式) • if 语句; • else • if 语句;
上一页 下一页 返回
4.2 选 择 结 构
• 在嵌套内的if 语句可能又是if-else 型的,这将会出现多个if 和多个 else 重叠的情况,这时要特别注意if 和else 的配对问题。
上一页
返回
4.2 选 择 结 构
• 4.2.1 if 语句的三种基本形式
• C51 语言的if 语句有三种基本形式。 • 1. 第一种形式(基本形式) • if(表达式)语句 • 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该
语句,其过程如图4.2 所示。 • 例4.4 输入两个整数,输出其中的大数。请编程实现此功能。 • #include <stdio.h> • void main()
“循环变量赋初值”表达式1,既可以是给循环变量赋初值的赋值表 达式,也可以是与此无关的其他表达式(如逗号表达式)。 • “循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达 式外,也允许是数值(或字符)表达式。 • for 语句中的各表达式都可省略,但分号间隔符不能少。
上一页
返回
4.4 C51 数 组
• 图4.5 是典型的当型循环结构,控制语句在循环体之前,所以在结束 条件已具备的情况下,循环体程序可以一次也不执行,C51 提供了 while 和for 语句实现这种循环结构。
• 图4.6 中其控制部分在循环体之后,因此,即使在执行循环体程序之 前结束条件已经具备,循环体程序至少还要执行一次,因此称为直到 型循环结构,C51 提供了do-while 语句实现这种循环结构。
• 二维字符数组中,第一个下标是字符串的个数,第二个下标定义每个 字符串的长度,该长度应当比这批字符串中最长的串多一个字符,用 于装入字符串的结束符' \o'。
上一页
返回
4.5 函 数
• C 语言程序的一般组成结构:
下一页 返回
4.5 函 数
• 普通函数之间可以互相调用,但普通函数不能调用主函数。 • 一个C 程序的指向从main( )函数开始,调用其他函数后返回到主函
执行结果。 • (4) default 子句可以省略不用。
上一页 下一页 返回
4.2 选 择 结 构
• 4.2.3 break语句
• C51语言还提供了一种break语句,专用于跳出switch语句。Break 语句只有关键字break,没有参数。
上一页
返回
4.3 循 环 结 构
• 程序设计中,常常要求某一段程序重复执行多次,这时可采用循环结 构程序。这种结构可大大简化程序,但程序执行的时间并不会减少。
会自动地在字符末尾加上结束符'\o'(NULL);用' ' 括起来的字符为 字符的ASCII 码值而不是字符串。比如:'a' 表示a 的ASCII 码值97, 而''a'' 表示一个字符串,它由两个字符组成,即a 和\o。
下一页 返回
4.4 C51 数 组
• 一个字符串可以用一个一维数组来装入,但数组的元素数目一定要比 字符多一个,以便C 编译器自动在其后面加入结束符' \o'。
4.2 选 择 结 构
• 例如:“if(a = 5)语句;”“if(b)语句;”都是允许的。只要表 达式的值为非0,即为“真”。如在“if(a = 5)…;”中,表达式 的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程 序中不一定会出现,但在语法上是合法的。
• (2) 在if 语句中,条件判断表达式必须用括号括起来,在语句之后 必须加分号。
(3);否则,转至步骤(4)。 • (3) 执行循环体语句组,并求解“循环变量增值”表达式3,然后
转向步骤(2)。
上一页 下一页 返回
4.3 循 环 结 构
• (4) 执行for 语句的下一条语句。 • 对“变量赋初值”“循环继续条件”和“循环变量增值”部分均可缺
省,甚至全部缺省,但其间的分号不能省略。 • 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
整个if 语句之外继续执行程序。如果所有的表达式均为假,则执行语 句n。然后继续执行后续程序。使用if 语句应注意以下问题: • (1) 在三种形式的if 语句中,在if 关键字之后均为表达式。该表达 式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值 表达式等,甚至也可以是一个变量。
上一页 下一页 返回
• 例4.1 要求把内部RAM 30H 中的一个压缩BCD 码(如97H),转换 为十六进制数,并把该数存放入内部RAM 31H,编程实现之。
• #include <reg51.h> • #include <absacc.h> • void main() •{ • unsigned char data a[20];
相关主题