内容正文:
项目二 顺序结构程序设计
1
C语言程序设计基础
知识目标
掌握C语言基本字符、标识符、关键字
掌握C语言数据类型
掌握C语言常量、变量及其类型
掌握C语言运算符及表达式
掌握C语言顺序结构程序设计
掌握C语言的格式化输入和输出函数
技能目标
学会基本数据类型的表示方法
学会变量和常量的定义和初始化
学会运算符的运算规则及表达式
学会其它语句设计顺序程序设计
学会使用输入输出函数
思政目标
培养学生良好的程序设计职业道德
严肃严谨认真和实事求是的科学态度
2
任务4
——运算符及表达式
3
(1)运算量:参加运算的对象称为运算量,运算量包括常量、变量、函数等。
(2)运算符:用来表示运算的符号称为运算符或操作符。
4.1运算符和表达式
顺序结构程序设计——基础篇
4
顺序结构程序设计——基础篇
算术运算符 +、-、*、/、% 强制类型转换运算符 (类型)
赋值运算符 =、+=、-=、*=、/=、%=、++、-- 长度运算符 sizeof
关系运算符 >、>=、<、<=、==、!= 下标运算符 [ ]
逻辑运算符 !、&&、|| 指针运算符 *、&
条件运算符 ?: 成员运算符 .、->
逗号运算符 , 其他运算符 ()
位运算符 <<、>>、~、|、^、&、<<=、>>=、|=、^=、&=
5
(3)运算符的优先级别和结合方向
如果在一个运算量两侧的运算符的优先级别不同,则应先执行优先级别高的运算符。
如果在一个运算量两侧的运算符的优先级别相同,则按运算符的结合方向的顺序进行处理。
顺序结构程序设计——基础篇
6
(4)表达式:
用运算符把运算量连接起来的符合C语言语法规则的式子。
C语言的表达式主要有:算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式。
(5)表达式的值:表达式运算的结果
C语言中的每个表达式都有值,在学习表达式时要弄清表达式的值的概念,并能把实际问题用正确的表达式来表示。
顺序结构程序设计——基础篇
7
(1)单目算术运算(正、负号运算)
运算符:+(正,取原值)、-(负,取相反数)。
优先级别:+、-同级别,是第2级。
结合方向:右结合
4.2算术运算
顺序结构程序设计——基础篇
8
(2)双目算术运算
运算符及运算规则:+(加)、-(减)、*(乘)、/(除)、%(求模或余)。
+(加)、-(减)、*(乘)、/(除)的运算规则:与数学中的运算规则相同。
%的运算规则:对于x%y,求x被y除所得的余数,结果的符号与被除数x的符号相同。
优先级别:+、-是同级别的,都是第4级;*、/、%是同级别的,都是第3级,高于+、-的优先级别。
结合方向:均为左结合。
4.2算术运算
顺序结构程序设计——基础篇
9
运算量的类型与结果类型:对于+、-、*、/这4种运算,参加运算的两个运算量可以是整型数据,也可以是实型数据;如果两个运算量都是整型数据,则结果也是整型数据,如果两个运算量中至少有一个是实型数据,则结果也是实型数据。
除法运算“/”:有以下两方面的含义。一是当运算符两侧的运输量都是整型数据时,结果也是整型数据,此时称为整除。另一方面当运算符两侧的运算量至少有一个是实型数据时,结果是实型数据,此时称为除法。
模运算%:要求参加运算的两个运算量必须是整型(或字符型)数据,运算所得的结果是整型数据。
顺序结构程序设计——基础篇
10
(1)关系运算符
关系运算符有:<、<=、>、>=、==、!=,分别称为小于,小于或等于、大于、大于或等于、等于、不等于。
优先级别:前4种关系运算符的优先级别相同都是第6级;后2种相同都是第7级。关系运算符的优先级低于算术运算符,高于赋值运算符。
结合方向:左结合。
4.3关系运算
顺序结构程序设计——基础篇
11
(2)关系表达式及其值
用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式等)连接起来所构成的表达式称为关系表达式。关系表达式的值有两个,分别是1和0,当关系表达式成立时,其值为1,当关系表达式不成立时,其值为0。
顺序结构程序设计——基础篇
12
(1)逻辑运算符
逻辑运算符有:&&、||、!、分别是逻辑与,逻辑或,逻辑非。
优先级别:逻辑非“!”优先级别是第2级的,高于算术运算;逻辑与“&&”的优先级别是第11级的,逻辑或“||”的优先级别是第12级的;逻辑与“&&”与逻辑或“||”的优先级别都低于关系运算,高于赋值运算。
结合方向:!为右结合,&&、||为左结合。
运算规则:a&&b的值为1当且仅当a与b均非零;a||b的值为0当且仅当a与b均为零;!a的值为0当且仅当a非零。
4.4逻辑运算
顺序结构程序设计——基础篇
13
顺序结构程序设计——基础篇
a b a&&b a||b !a
0 0 0 0 1
0 非0 0 1 1
非0 0 0 1 0
非0 非0 1 1 0
14
(2)逻辑表达式
逻辑表达式:用逻辑运算符(逻辑与&&、逻辑或||、逻辑非!)把两个表达式连接起来的式子。
(3)逻辑表达式(与、或、非)
1)与表达式
a&&b
顺序结构程序设计——基础篇
15
【例2-5】 int x=1,y=2; ++x&&(y=x+3);请问x和y的值为多少?
【程序代码】
顺序结构程序设计——基础篇
16
【运行结果】
顺序结构程序设计——基础篇
17
【程序分析】
表达式++x&&(y=x+3)是逻辑与表达式,先计算与运算符&&左端的表达式++x,得x的值为2,表达式++x的值也为2。由于++x的值为非0,所以,还要计算与运算符&&右端的表达式(y=x+3),因此y的值为5,。所以运行结果为x=2,y=5。
顺序结构程序设计——基础篇
18
2)或表达式
a||b
顺序结构程序设计——基础篇
19
【例2-6】 int x=-1,y,z;y=z=2; ++x||y++||++z;请问x、y、z的值为多少?
【程序代码】
顺序结构程序设计——基础篇
20
【运行结果】
顺序结构程序设计——基础篇
21
【程序分析】
根据运算符的优先级别和结合方向,通过加括号,得到表达式++x||y++||++z的等价表达式(++x||y++)||++z,该表达式是或表达式,根据或表达式的计算过程,先计算或运算符||左端的表达式 ++x||y++,它又是或表达式,先计算++x,得++x的值为0(x的值也为0),再计算y++,得y++的值为2(y的值为3)。于是表达式 ++x||y++的值为1,所以,不再计算++z(z的值仍为2)。因此运行结果为x=0,y=3,z=2。
顺序结构程序设计——基础篇
22
【例2-7】 int x=-1,y,z;y=z=2; ++x&&y++||++z;请问x、y、z的值为多少?【程序代码】
顺序结构程序设计——基础篇
23
【运行结果】
顺序结构程序设计——基础篇
24
【程序分析】
由于与运算符&&的优先级别高于或运算符||的优先级别,所以表达式++x&&y++||++z的等价表达式(++x&&y++)||++z,是或表达式。先计算或运算符||左端的表达式 ++x&&y++,而它又是与表达式,先计算++x,得++x的值为0(x的值也为0),根据与表达式的计算过程,不再计算与运算符&&右端的表达式y++(y的值仍为2),因此,与表达式 ++x&&y++的值为0。再计算或运算符||右端的表达式++z,得z的值为3,++z的值也为3。因此运行结果为x=0,y=2,z=3。
顺序结构程序设计——基础篇
25
3)非表达式
!a
顺序结构程序设计——基础篇
26
C语言中赋值运算符是一个等号“=”。
变量赋值的一般形式:变量=表达式
优先级别:赋值运算的优先级别是第14级,仅高于逗号运算符。
结合方向:右结合。
赋值表达式:根据运算符的优先级别和结合方向,通过加括号最终化为用赋值号把变量和表达式连接起来的式子称为赋值表达式。赋值表达式的值为赋值后赋值号左边变量的值。
4.5赋值运算
顺序结构程序设计——基础篇
27
复合赋值运算
在赋值运算中,常见到:x=x+y、x=x-y、x=x*y、x=x/y、x=x%y。C语言把以上式子分别缩写成:x+=y、x-=y、x*=y、x/=y、x%=y。这样就产生了一些新的运算符:+=、-=、*=、/=、%=。这些算术运算符与赋值运算符合成的运算符称为复合赋值运算符。
优先级别:与赋值运算符同级,都是第14级。
结合方向:右结合。
顺序结构程序设计——基础篇
28
前缀形式:++变量、--变量
——把i+1或i-1赋给变量i,而表达式(++i或--i)取变量i被赋值后的值。
后缀形式:变量++、变量—
——把i+1或i-1赋给变量i,而表达式(i++或i--)取变量i被赋值前的值。
优先级别:自加、加减运算符的优先级别是第2级,高于算术运算符。
结合方向:右结合。
4.6自加和自减运算
顺序结构程序设计——基础篇
29
顺序结构程序设计——基础篇
表达式 表达式执行前变量值 表达式执行后变量值 表达式的值
a++ 2 3 2
b-- 2 1 2
++c 2 3 3
--d 2 1 1
30
【例2-8】 int x,n;x=5,n=5;x+=n++请问x、n的值为多少?
【程序代码】
顺序结构程序设计——基础篇
31
【运行结果】
顺序结构程序设计——基础篇
32
$$