第3章 C程序控制结构.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

优先次序:
•!(非)->&&()->||() •逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算 术运算符
2020/2/7
22
!(非) 算术运算符 关系运算符 &&和|| 赋值运算符
(高) (低)
例 a<=x && x<=b // (a<=x) && (x<=b)
a>b&&x>y //(a>b)&&(x>y)
2020/t;stdio.h> int main() {
int a,b,c; printf("请输入一个3位数:"); scanf("%1d%1d%1d",&a,&b,&c); /* 第6行 %1d表示存入一位十进制数*/ printf("\n结果是:%d%d%d",c,b,a); return 0; }
a==b||x==y //(a==b)||(x==y)
!a||a>b
//(!a)||(a>b)
2020/2/7
23
3.3.2逻辑运算符和逻辑表达式
2.逻辑表达式 •用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。 •逻辑表达式的值应该是一个逻辑量“真”或“假”。
任何非零的数值被认作“真”
2020/2/7
(b) 图3.1 三种基本的结构
(c)
10
3.2.2 顺序结构
顺序结构没有专用的语句,它表示程序按
执行语句书写的先后次序,一条条地顺序执
行。
【例3.1】 交换变量a和b的值
#include <stdio.h>
int main()
{
int x,y,t; printf("请输入x和y的值:");
2020/2/7
14
3.3 选择结构语句
选择结构的作用是根据所指定的条件,来 决定给定的操作是否执行。而实现选择程序 设计的关键就是要判断理清条件与操作之间 的逻辑关系。
条件常常用关系表达式或逻辑表达式来表 示。关系表达式可以进行简单的关系运算, 逻辑表达式则可以进行复杂的运算。注意, 在程序中数值表达式和字符表达式也可以用 来表示一些简单的判断条件。
if(x>y) printf(“%d”,x);
语句执行过程:先 判断条件表达式, 如果表达式的结果 为非零,即条件为 真,则执行if后面 的语句;否则,就 不执行if后面的语 句。
2020/2/7
条件表达 式
0(假)
非0(真)
语句
图3.2 单分支if 语句的执行流程
32
【例3.3】 输入两个整数,输出这两个数的最大值。 #include <stdio.h> int main() {
例如:
if(x<y)
{ int t; //定义局部变量t
t=x;
x=y;
y=t;
}
2020/2/7
8
3.1.3 流程控制语句
表3.1 C语言的控制语句
选择结构 循环结构
其它控制语句
2020/2/7
条件语句 开关语句 while循环语句 do循环语句 for循环语句 结束本次循环语句 终止执行switch或循环语句 从函数返回语句 转向语句
下列逻辑表达式的结果是多少?注意优先级
• !5||7&&0 • !0||'a'&&'b'
2020/2/7
27
表3.4 逻辑表达式示例
功能
表达式
x是否是小 x>='a' && x<='z' 写字母
x是否是大 x>='A' && x<='Z' 写字母
x是否是数 x>='0' && x<='9' 字字符
下列是否是合法的表达式: • (a=6)+(b=7) • (a=6;)+(b=7;)
2020/2/7
6
2.空语句 空语句用一个分号表示,其一般形式为: ;
2020/2/7
7
3.1.2 复合语句
把多条语句用括号{}括起来组成的一个语 句称复合语句。复合语句在语法上等价于一 条简单语句,它们用来将一组逻辑相关的语 句组织起来,常用在流程控制语句中。
第3章 C程序控制结构
2020年2月7日星期五
2020/2/7
1
3.1 C语句概述 3.2 顺序结构 3.3 选择结构语句 3.4 循环结构的流程控制 3.5 循环的嵌套 3.6 辅助控制语句 3.7 循环结构程序举例
2020/2/7
2
所有的流程控制都是由执行语句实现,不 同的执行语句具有不同的语法格式,用来完 成不同的操作,实现不同的功能。
关系运算符的优先级低于算术运算符,高于赋值运算符。
若a=3,b=20,c=10,则 f=a<b<c如何理解? 关系运算符的综合性从左到右
2020/2/7
20
3.3.2 逻辑运算符和逻辑表达式
1.逻辑运算符及其优先次序
(1)&& (逻辑与) 相当于其他语言中的AND
((例23:))a!|!||a|ab&&若若((b逻逻真 假 真假aaa辑为辑,b若非之真或a),一,)假 真 假真bb为为则相相真真!a当当假假真真为,,!a于于假则则其其。aa假真真&假他|他!|bb&语语为b言言真a为&真假假中中假。真&的的b。NOa真 假 真真OR||bT
2020/2/7
15
3.3.1 关系运算符与关系表达式 1.关系运算符
表3.2 C语言的关系运算符
运算符 > >= <= < == !=
名称 大于 大于等于 小于等于 小于 等于 不等于
例 10>5 'A'>='a' 5<=4 'A'<'a' 5==5 5!=5
结果 1 0 0 1 1 0
注意:关系运算的结果要么是“1” ,要么是“0” 。
x是否是奇 x%2= =1或者x%2 数
x是否是偶 x%2= =0 或者 !(x%2) 数
表示x除3余 x%3= =2 && x%5= =1 2并且除5余
1
2020/2/7
举例
若x=’b’,结果是1;若x=’5’, 结果是0 若x=’B’,结果是1;若 x=’b’,结果是0 若x=’3’,结果是1;若x=’a’, 结果是0 若x=15,结果是1;若 x=20,结果是0 若x=24,结果是1;若 x=21,结果是0 若x=11,结果是1;若x=21, 结果是0
2020/2/7
13
程序2: #include <stdio.h> int main() {
int a,x,y,z,b; scanf("%3d",&a); x=a/100; y=a/10%10;// y=(a-x*100)/10; z=a%10; b=z*100+y*10+x; printf("%d",b); }
a>b //1
• 关系表达式的值是一个(a>逻b)辑==值c ,//1即“真”或“假”。
b+c<a //0
例:关系表达式”a>b”的d值=a为>b“真//d”=1,表达式的值为1。
f=a>b>c //f=0
2020/2/7
19
2.关系表达式 关系表达式是用关系运算符将两个表达式 连接起来的有意义的式子。关系表达式的结 果要么是“1”(真),要么是“0”(假)。
if( )、if~else switch( )~ while( )~ do~while( ) for( )~
continue
break
return
goto
9
3.2 顺序结构
3.2.1 三种基本的结构 这三种基本的结构是:顺序结构、选择结 构和循环结构。
S1
Y 条N
S1
件 S2
S2
条N 件Y
S1
(a)
scanf("%d%d",&x,&y); printf("交换前:x=%d,y=%d",x,y);
t=x;x=y;y=t; printf("交换后:x=%d,y=%d",x,y);
return 0;
2020/2/7
}
11
【例3.2】 编程输入一个三位的整数,逆 序显示该数。
分析:调用scanf( )函数读数据时,可以 在格式控制符“%d”的“%”和“d”之间加一 个数字,表示读入的数字列数。例如, “%1d”,表示读入1位整数;“%3d”,表示 读入一个3位整数。利用该特点按位读取这3 个位。
a>b y
n a>c n
y a和b交换 a和c交换
b>c y c和b交换
2020/2/7
34
#include <stdio.h>
2020/2/7
4
3.1.1简单语句 1.表达式语句 在C语言中,任何一个表达式后面加上一 个分号就构成一个语句。 其一般形式为: 表达式;
2020/2/7
5
下列是否是合法的表达式语句: • x=y=z=5; • printf("结果是:%d",70+50); • x=5 • 缺少分号,称为赋值表达式
判断b。a和b都为假才判断c
例:(m=a>b)&&(n=c>d)
a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) //结果m=0,n=1
2020/2/7
26
下列逻辑表达式的结果是多少? 例如: int a=9,b=0,c=-7; 则 • !a • !b • !c • a&&b • a||b
int a,b,max; printf("请输入两个整数:"); scanf("%d%d",&a,&b); max=a; if(max<b) max=b; printf("\n最大值是:%d",max); return 0; }
2020/2/7
33
【例3.4】 从键盘任意输入3个整数,分别存储 到三个整型变量a,b,c中,设计程序使得变量a,b,c 的值从小到大排序,即变量a存放最小的,变量c存 放最大的,输出排序结果。
!0逻辑值为1
4-1值为3
表达式值为0
1&&0逻辑值为0 8<3逻辑值为0
2020/2/7
25
5.2 逻辑运算符和逻辑表达式
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时
才需要判断c的值。 (2)a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才
2020/2/7
18
2.关系表达式 • 用关系运算符将两个表达式(可以是算术表达式或
关系表达式,逻辑表达式,赋值表达式,字符表达式) 连接起来的式子,称关系表达式 C语言中没有专用
的逻辑值,1代表
例:a>b,a+b>b+c,(a=例3)>i(nbt=a5=)3,’,ab’=<2‘,bc=’,1(a,真d>,fb,;)0>代(b表<c假)
任何一个计算机程序,按其执行时的流程 控制,在逻辑结构上可划分为3种基本结构: 顺序结构、选择结构、循环结构,可以通过 这3种基本结构的嵌套实现复杂程序的流程控 制。
2020/2/7
3
3.1 C语句概述
C语言的执行语句可分为以下几类: • 简单语句:表达式语句、空语句 • 复合语句 • 流程控制语句
1. <
(小于)
2. <= (小于或等于)
3. >
(大于)
优先级相同(高)
4. >= (大于或等于)
5. == (等于)
6. 说!=明: (不等于例)
c>a+b 优先级//相c>同((a+低b))
关系运算符的优先级aa低>=b=于!b=<算cc 术/运//(/算aa>=符b=)(!b=<cc)
关系运算符的优先级a高=b于>c赋值运/算/a符=(b>c)
28
下列表达式的计算顺序是什么? a<7&&!b • a+5||6>b&&c-2
将a∈[50,100]写成C语言表达式,该如何 表示?
a>=50&&a<=100
2020/2/7
29
用逻辑表达式来表示闰年的条件
•能被4整除,但不能被100整除。 •能被4整除,又能被400整除。

(year%4==0&&year%100!=0)||year%400==0
2020/2/7
16
说明:
(1) 关系运算符的运算对象可以是任何基本 数据类型。字符型的数据是按ASCII码值的大小 进行比较的。
(2) 不要混淆等于运算符==和赋值运算符=。 x==y:表示变量x的值等于变量y的值。 x=y :表示将变量y的值赋值给变量x。
2020/2/7
17
1.关系运算符及其优先次序

值为真(1)是闰年,否则为非闰年。
思考:判断char型变量ch是否为小写字母的正确表达 是什么?
2020/2/7
30
3.3.3 if语句
if语句有三种结构形式:if语句、if~else 语句以及if的嵌套。
2020/2/7
31
1.if语句 也称为单分支选择结构,使用形式如下: if(条件表达式) 语句 例:
例:设a=4,b=5:
!a的值为0
a&&b的值为1
a||b的值为1 C语言!a中||,b运的算值量为:01表示“假”,非0表示“真”
4&&0||2的值为1 运算结果:0表示“假”,1表示“真”。
2020/2/7
24
3.3.2逻辑运算符和逻辑表达式
例:5>3&&8<4-!0
自左向右运算
5>3逻辑值为1
相关文档
最新文档