C语言程序设计PPT--第三章--简单程序设计_第1页
C语言程序设计PPT--第三章--简单程序设计_第2页
C语言程序设计PPT--第三章--简单程序设计_第3页
C语言程序设计PPT--第三章--简单程序设计_第4页
C语言程序设计PPT--第三章--简单程序设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C C程序设计程序设计 第三章第三章 简单程序设计简单程序设计 主讲:高利军主讲:高利军 第第1 1第三章第三章 简单程序设计简单程序设计C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2 2 在程序执行期间不变的数据称为在程序执行期间不变的数据称为常量常量 。 例如例如:圆周率圆周率的近似值的近似值3.142 ,自然对数底的近似值自然对数底的近似值2.7183 等。等。常量可以直接书写在程序中,称为字面常量。常量可以直接书写在程序中,称为字面常量。 程序程序 #include void main() printf(“%fn”, 2.7183); 打印出打

2、印出2.7183 3.1常量及常量定义常量及常量定义C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3 3 这种格式,定义相应标识符为其后面的常量字符串。这种格式,定义相应标识符为其后面的常量字符串。例例: #define SPEED 55定义标识符定义标识符 SPEED 代表整数代表整数55 。在该行之后的。在该行之后的程序中凡是出现程序中凡是出现SPEED都代表都代表55 。 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4 43.2 变量及变量声明变量及变量声明3.2.1 变量变量 变量(变量(variable

3、)是在程序执行期间值可变的数据对象。)是在程序执行期间值可变的数据对象。 一个变量包含两个侧面。一个变量包含两个侧面。值:在程序执行的某一时刻变量所具有的值;值:在程序执行的某一时刻变量所具有的值;属性:包括变量的属性:包括变量的名字名字类型类型作用域作用域存储区存储区存储区地址存储区地址等等 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军5 5 编译程序在把高级语言程序翻译成机器语言程序时,给每编译程序在把高级语言程序翻译成机器语言程序时,给每个变量都分配一块适当的存储空间,以便随时保存变量的值。个变量都分配一块适当的存储空间,以便随时保存变量的值。这

4、块存储区就是变量的存储区,变量的地址就是这块存储区的这块存储区就是变量的存储区,变量的地址就是这块存储区的首地址,变量的值就是这块存储区中现行保存的数据。首地址,变量的值就是这块存储区中现行保存的数据。2.7183v:0F000:变量地址变量名变量值变量的存储区 设有变量设有变量v ,分配在内存,分配在内存0F000开始的一块存储区中,开始的一块存储区中,现行值为现行值为2.7183 ,如图所示。,如图所示。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军6 63.2.2 变量声明变量声明变量的属性由变量声明规定,变量的属性由变量声明规定,在变量声明中引进

5、变量,并且规定所引进的变量的属性。在变量声明中引进变量,并且规定所引进的变量的属性。变量声明的语法如下:变量声明的语法如下: 变量声明变量声明 类型类型 变量项表变量项表 ; 变量项表变量项表 变量项变量项 变量项,变量项表变量项,变量项表 变量项变量项 标识符标识符 标识符标识符 = 初值初值按上述语法规则,一个变量声明的形式如下:按上述语法规则,一个变量声明的形式如下: T id , id =初值初值, . , id ;C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军7 7其中:其中: 1. 每个每个 id 是一个标识符,是由该变量声明引进的变量。是一

6、个标识符,是由该变量声明引进的变量。也是相应变量的名字;也可以直接给变量赋初值。也是相应变量的名字;也可以直接给变量赋初值。 2. T 是类型,可以是任何一种类型符,包括已经学过的是类型,可以是任何一种类型符,包括已经学过的:各种浮点类型、各种浮点类型、各种整数类型、各种整数类型、字符类型、字符类型、布尔类型、布尔类型、枚举类型,枚举类型,以及我们以后将学习的各种类型。以及我们以后将学习的各种类型。它决定了列在它后边标识符表中的标识符所代表变量的类型属性。它决定了列在它后边标识符表中的标识符所代表变量的类型属性。 3.每个变量声明所处的位置决定了它所声明变量的作用域每个变量声明所处的位置决定了

7、它所声明变量的作用域C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军8 8变量声明变量声明 int i , j =7, k ; char c ; int t =0; float amount , total ; bool flag ; enum red,blue,green color ;声明声明:i、j、k、t 为为 int 型变量;型变量;c 为为 char 型变量;型变量;amount、total为为float型变量;型变量;flag 为为 bool 型变量;型变量;color 为一个枚举型变量。为一个枚举型变量。C C程序设计程序设计 第三章第三章

8、 简单程序设计主讲:高利军简单程序设计主讲:高利军9 93.2.3 变量形态变量形态 一个变量作为程序语言的一个成分,在程序中有三种出现状态一个变量作为程序语言的一个成分,在程序中有三种出现状态 : . 在变量声明中出现在变量声明中出现 . 为变量赋值时出现为变量赋值时出现 . 引用性出现引用性出现 在变量声明中出现在变量声明中出现 一个标识符在某变量声明的标识符表中出现便引进了一个标识符在某变量声明的标识符表中出现便引进了一个变量,该变量的类型由该标识符表前边的类型决定一个变量,该变量的类型由该标识符表前边的类型决定 。但是从程序开始执行的时刻一直到给该变量赋值之前该变但是从程序开始执行的时

9、刻一直到给该变量赋值之前该变量是没有值的,这时称该变量为量是没有值的,这时称该变量为“值无定义的值无定义的”。 例如有变量声明例如有变量声明: char c ;则引进字符型变量,在程序开始执行时则引进字符型变量,在程序开始执行时c 是是“值无定义的值无定义的”,它还没有值。它还没有值。c:为变量赋值时出现为变量赋值时出现 这种出现状态为变量赋以一个它值域之内的(即所这种出现状态为变量赋以一个它值域之内的(即所属类型的)一个数据。一旦为变量赋值,该变量就变成了属类型的)一个数据。一旦为变量赋值,该变量就变成了“值有定义的值有定义的”。 例如:变量例如:变量 c 若给它赋值若给它赋值 P 后,它便

10、是后,它便是“值有定值有定义的义的”,并且值为,并且值为 P 。 P 若再给它赋值若再给它赋值 S ,则,则 c 的值就变成了的值就变成了 S ,这时原,这时原来的值来的值 P 便已丢失。便已丢失。 S 引用性出现引用性出现 引用性出现分成两种引用性出现分成两种:一种引用变量当前值;一种引用变一种引用变量当前值;一种引用变量本身,包括它的名字、地址、存储区、类型等一切属性。量本身,包括它的名字、地址、存储区、类型等一切属性。 引用值的出现一般在表达式中,这时被引用的变量必须引用值的出现一般在表达式中,这时被引用的变量必须是是“值有定义的值有定义的”,这种引用性出现不会改变变量的值。,这种引用性

11、出现不会改变变量的值。 引用变量本身多出现在参数结合中。这时被引用的变量引用变量本身多出现在参数结合中。这时被引用的变量可以是可以是“值有定义的值有定义的”;也可以是;也可以是“值无定义的值无定义的”。这种引用。这种引用性出现可能会改变变量的值。性出现可能会改变变量的值。 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军10103.2.4 变量地址变量地址在在C程序中,经常使用一个变量的存储区及其地址。因此程序中,经常使用一个变量的存储区及其地址。因此 C 给出一个运算符给出一个运算符&该运算符是一个单目运算符,把它缀在一个变量前,求相应该运算符是

12、一个单目运算符,把它缀在一个变量前,求相应变量的内存地址。例如对于本节开始的变量变量的内存地址。例如对于本节开始的变量 v 而言,运算而言,运算 &v 将得到将得到 v 的地址的地址 0F000 。该地址也称为该地址也称为 v 的指针,的指针,运算符运算符 & 也称为求指针运算符,也称为求指针运算符,运算运算 &v 也称为求也称为求 v的指针。的指针。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军11113.2.5 变量初始化变量初始化在声明变量时还可以给变量赋以初值,形式是:在声明变量时还可以给变量赋以初值,形式是: id =

13、初值初值 即在变量标识符后加一个等号再跟以相应初值。即在变量标识符后加一个等号再跟以相应初值。例如:例如: int i=0 , j=1 , k=100*2 ; char c=A ; enum red,blue,green color = red ;变量在声明时被赋以初值,则在程序开始运行时,变量在声明时被赋以初值,则在程序开始运行时,它便取得了相应值,它是值有定义的。它便取得了相应值,它是值有定义的。现在看,初值是一个常量表达式,将来学过构造型现在看,初值是一个常量表达式,将来学过构造型类型后,初值可能是由花括号括起来的常量表达式表。类型后,初值可能是由花括号括起来的常量表达式表。C C程序设

14、计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军1212 在使用变量时要注意以下几点:在使用变量时要注意以下几点: 1. 程序中使用的一切变量都必须声明。程序中使用的一切变量都必须声明。 2. 在同一作用域内,任何两个变量不许重名,也不在同一作用域内,任何两个变量不许重名,也不许与其它类标识符重名。许与其它类标识符重名。 3. 变量的声明必须出现在所有使用之前。变量的声明必须出现在所有使用之前。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军13133.3 表达式表达式3.3.1 表达式的结构表达式的结构表达式(表达式(expre

15、ssion)是)是 C 程序完成各类运算程序完成各类运算的主要部分,由运算符和运算分量组成。的主要部分,由运算符和运算分量组成。表达式表达式 基本表达式基本表达式 后缀表达式后缀表达式 一元表达式一元表达式 二元表达式二元表达式 条件表达式条件表达式 逻辑表达式逻辑表达式 赋值表达式赋值表达式 顺序表达式顺序表达式基本表达式基本表达式 标识符标识符字面常量字面常量 (表达式)(表达式)C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军1414基本表达式是基本表达式是C表达式的最底层,包括:表达式的最底层,包括:标识符、标识符、字面常量、字面常量、括号表达式,

16、括号表达式,可以说基本表达式就是可以说基本表达式就是C表达式的运算分量。表达式的运算分量。标识符标识符包括变量标识符和常量标识符,它们的类包括变量标识符和常量标识符,它们的类型由相应声明给出,当表达式计算时,变量应该是值型由相应声明给出,当表达式计算时,变量应该是值有定义的。有定义的。字面常量字面常量已经介绍过。已经介绍过。用括号括起来一个表达式用括号括起来一个表达式,仍是一个运算分量。,仍是一个运算分量。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军1515由基本表达式(运算分量)和运算符相互组合可以构由基本表达式(运算分量)和运算符相互组合可以构成各

17、种复杂的表达式。例如:成各种复杂的表达式。例如: 3*6 u0 r=(x+y)*5=(r-s)/8l 3 、6 、u 、r 、x 、y 、5 、s 、8 等都是基本表达式;等都是基本表达式;l 经过与运算符组合后的经过与运算符组合后的 x+y 、r-s 是表达式;是表达式;l 用括号括上的表达式用括号括上的表达式 (x+y)、(r-s) 又变成基本表达式;又变成基本表达式;l 最终若干基本表达式与运算符组合得到的最终若干基本表达式与运算符组合得到的r=(x+y)*5-间接选择间接选择+ -+ -自增、自减自增、自减( (类型名类型名)初始化列表初始化列表 复合字面值复合字面值+ -+ -自增、

18、自减自增、自减前缀前缀从右到左从右到左15SizeofSizeof长度长度一元一元 按位取反按位取反! !逻辑非逻辑非- +- +算术负、正算术负、正& &地址地址* *间接访问间接访问( (类型名类型名) )类型转换类型转换14C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军1717* * / %/ %算术乘、除、求算术乘、除、求余数余数二元二元从左到右从左到右13+ -+ -算术加、减算术加、减12左移、右移左移、右移11 = =关系运算关系运算10= != !=判等运算判等运算9& &按位与按位与8 按位异或按位异或7

19、| |按位或按位或6&逻辑与逻辑与5|逻辑或逻辑或4? :? :条件表达式条件表达式三元三元从右到左从右到左3= += -= = += -= * *= /= %= = /= %= = &= = |= &= = |=赋值赋值二元二元2, ,顺序表达式顺序表达式从左到右从左到右1C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军1818 1. 所有字符必须写在一条水平线上。不允许出现上、下所有字符必须写在一条水平线上。不允许出现上、下角标、分数线等。角标、分数线等。 2. 乘不能写成乘不能写成 ab ,也不能写成,也不能写成 ab 必须写

20、成必须写成 a*b 3. 除了下标使用方括号以外,所有括号必须用圆括号。除了下标使用方括号以外,所有括号必须用圆括号。 4. 数学中连续的关系运算,数学中连续的关系运算, a y b 应该写成应该写成 ( a y ) & ( y b ) 5. 由两个或两个以上字符构成的运算符其各字符中间不许由两个或两个以上字符构成的运算符其各字符中间不许夹有空格等间隔符。夹有空格等间隔符。 6.适当加括号是好习惯。适当加括号是好习惯。在书写在书写 C 表达式时必须注意与通常数学表达式的区别:表达式时必须注意与通常数学表达式的区别:C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设

21、计主讲:高利军19193.3.2 表达式的计算表达式的计算表达式的计算顺序是不确定的。大致遵循如下规表达式的计算顺序是不确定的。大致遵循如下规则:则:1.若两个不同优先级的运算符相邻,则应先计算若两个不同优先级的运算符相邻,则应先计算优先级高的运算符规定的运算。优先级高的运算符规定的运算。2.若两个运算符同级且相邻,则应按运算符结合若两个运算符同级且相邻,则应按运算符结合律的规定从左向右或从右向左计算。律的规定从左向右或从右向左计算。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2020我们已经学习了:我们已经学习了:算术运算符(算术运算符(+ 、- 、

22、* 、/ 、%)、)、关系运算符(关系运算符( 、=)、)、判等运算符(判等运算符(= 、!=)、)、逻辑运算符(!逻辑运算符(! 、& 、| )、)、求变量指针运算符(求变量指针运算符( & )。)。1. 经过算术运算符进行运算得到的表达式称算术表达式,算经过算术运算符进行运算得到的表达式称算术表达式,算术表达式产生算术型结果;术表达式产生算术型结果;2. 经过关系运算符和判等运算符进行运算得到的表达式称关经过关系运算符和判等运算符进行运算得到的表达式称关系表达式,关系表达式产生布尔型结果;系表达式,关系表达式产生布尔型结果;3. 经过逻辑运算符进行运算得到的表达式称逻辑表达

23、式,逻经过逻辑运算符进行运算得到的表达式称逻辑表达式,逻辑表达式产生布尔型结果。辑表达式产生布尔型结果。 l算术表达式的优先级高于关系表达式,算术表达式的优先级高于关系表达式,l关系表达式的优先级高于判等表达式,关系表达式的优先级高于判等表达式,l判等表达式的优先级高于逻辑表达式。判等表达式的优先级高于逻辑表达式。在算术表达式中,在算术表达式中,乘法运算(乘法运算(* 、/ 、%)高于加法运算()高于加法运算(+ 、- )在关系表达式和判等表达式中,在关系表达式和判等表达式中,运算符的优先级是一样的运算符的优先级是一样的在逻辑表达式中,在逻辑表达式中,l 逻辑非运算(!)优先级最高,逻辑非运算

24、(!)优先级最高,l 然后是逻辑与运算(然后是逻辑与运算(&),),l 逻辑或运算(逻辑或运算( | )优先级最低。)优先级最低。 int a=0,b=0,c=1; if(a|b&c) printf(1);C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2121再举一个表达式计算的例子。设再举一个表达式计算的例子。设 u=20、v=30、w=40、x=20、y=50 计算如下算式:计算如下算式:u+20v | w=0 | xx | x+yu+v+w当计算出当计算出u+20v的值为的值为true后,就可以得出结论:后,就可以得出结论:不论后面

25、诸条件的值是不论后面诸条件的值是 true true 还是还是 false false ,该表达式的,该表达式的值都是值都是true true 。所以该表达式的后边部分可以不必计算。所以该表达式的后边部分可以不必计算。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2222表达式的计算规则如下表达式的计算规则如下: . 括号内的表达式先计算;括号内的表达式先计算; . 运算符分运算符分16个优先级,不同级运算符个优先级,不同级运算符相邻,先计算优先级高的运算;相邻,先计算优先级高的运算; . 同级运算符相邻,按结合律的规定从同级运算符相邻,按结合律的规定从

26、左向右或从右向左进行计算;左向右或从右向左进行计算; C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军23233.4 语句语句程序的一个侧面是描述对数据的操作,操程序的一个侧面是描述对数据的操作,操作由一个个动作组成。在程序设计语言中,作由一个个动作组成。在程序设计语言中,表示动作的是语句(表示动作的是语句(statement),语句的),语句的执行表示执行有关动作。执行表示执行有关动作。 有关语句分类的语法如下:有关语句分类的语法如下: C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2424若不考虑标号,若不考虑标

27、号, C语句分类如下图所示:语句分类如下图所示:空语句空语句表达式语句表达式语句返回语句返回语句break语句语句continue语句语句goto语句语句复合语句复合语句 if语句语句分支语句分支语句 switch 语句语句 do语句语句重复性语句重复性语句 while语句语句 for语句语句简单语句简单语句结构语句结构语句语句语句C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军25253.5 表达式语句表达式语句表达式语句的语法是:表达式语句的语法是: 表达式语句表达式语句 表达式表达式 ; 即,一个表达式后跟以一个分号即,一个表达式后跟以一个分号“;”

28、就构成表达式语句,它就构成表达式语句,它的语义是计算表达式的值。例如:的语义是计算表达式的值。例如: 3+5 ; b = a*c-3 x+y & c+d 0 ;C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军26263.6 赋值赋值给变量赋值的操作是最基本的操作。给变量赋值的操作是最基本的操作。C 用用带赋值运算符的表达式语句描述赋值操作。带赋值运算符的表达式语句描述赋值操作。这种表达式语句一般具有形式:这种表达式语句一般具有形式: v = e ;其中:其中:l = 是赋值运算符,由一个等号组成。是赋值运算符,由一个等号组成。l v 是一个左值(现

29、在看就是一个变量),作为赋是一个左值(现在看就是一个变量),作为赋值运算符左端的运算分量。值运算符左端的运算分量。l e 是一个表达式,作为赋值运算符右端的运算分是一个表达式,作为赋值运算符右端的运算分量,量,e能计算出一个值。能计算出一个值。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2727例语句例语句: days = 2+5 ;执行结果是将值执行结果是将值 7 赋给变量赋给变量 days 。 表达式语句被执行时,赋值运算符右端的表达式语句被执行时,赋值运算符右端的 e 被计算并得被计算并得到一个值;然后把该值送入赋值运算符左端运算分量的变量到一个

30、值;然后把该值送入赋值运算符左端运算分量的变量 v 中(即送入中(即送入v所代表的存储区中)。所代表的存储区中)。若若 days 原来是值无定义的,现在它变成值有定义的,原来是值无定义的,现在它变成值有定义的,并取值并取值 7;若若 days 原来是值有定义的,则不论原来是值有定义的,则不论 days 原来值是原来值是什么,都将被什么,都将被 7 所取代,所取代,days 仍是值有定义的,值是仍是值有定义的,值是 7 。最后整个表达式值也为最后整个表达式值也为7。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2828在赋值表达式中,赋值运算符在赋值表达式

31、中,赋值运算符“=”右端是计算值的表达式,右端是计算值的表达式,左端回答左端回答“该值交给什么对象该值交给什么对象”。因此下述语句都是正确的。因此下述语句都是正确的。 firstnumber=1; circumference=2*pi*radius甚至数学上显然不成立的甚至数学上显然不成立的 nextnumber=nextnumber+1也是正确的。其执行结果是将变量也是正确的。其执行结果是将变量 nextnumber 的值加的值加1,得到一个新值,再送入变量得到一个新值,再送入变量 nextnumber 中去。中去。但下述形式是错误的但下述形式是错误的, 因为左端不是变量因为左端不是变量(左

32、值左值)。 1=firstnumber tength*width=areaC C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军2929【例【例3-1】设】设 v1 , v2 , v 是同一类型的是同一类型的三个变量,且三个变量,且 v1 , v2 都是值有定义的,则都是值有定义的,则下述语句列将使下述语句列将使 v1 与与 v2 的值互相交换。的值互相交换。 v=v1; v1=v2; v2=v; V1:V2:V: C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3030【例【例3-2】做一个长】做一个长 50cm ,宽,宽

33、 30cm,面积,面积 500cm2 的矩形木框,且各边等宽。编出计算该木框每边应做多宽的程序。的矩形木框,且各边等宽。编出计算该木框每边应做多宽的程序。x5003050如图所示,若设木框各边宽为如图所示,若设木框各边宽为 x,框长为,框长为 length,宽,宽为为 width,面积为,面积为 area;由数学知识可知;由数学知识可知: area=2(length*x+(width-2x)*x)即即 : 4x*x - 2(length+width)x + area = 0 这是一元二次方程,使用求根公式编程序解该方程。这是一元二次方程,使用求根公式编程序解该方程。C C程序设计程序设计 第三

34、章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3131该方程求解步骤如图: 计算 x1计算计算 b计算 x2输出x1,x2计算 开始结束 #include stdio.h #include math.h #define length 50.0 #define width 30.0 #define area 500.0 void main() float x1,x2,b,d; b=-2.0*(length+width); d=sqrt(b*b-4.0*4.0*area); x1=(-b+d)/(2*4); x2=(-b-d)/(2*4); printf(x1=%.2f x2=%.2f

35、 n,x1,x2); 该程序运行后将输出: X1=36.58 X2=3.42C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3232o + 和和 在程序设计过程中经常有把某变量在程序设计过程中经常有把某变量n的值取出,加的值取出,加1后再送回后再送回n中中这类运算。例:这类运算。例: nextnumber=nextnumber+1 为了简化书写,为了简化书写,C引进两个运算符引进两个运算符+-分别表示把一个整数类型变量中内容取出加分别表示把一个整数类型变量中内容取出加1(+)或减)或减1(-)后)后再送回原变量中去。再送回原变量中去。 表达式表达式类别类别

36、运算后运算后v v的值的值运算后表达式值运算后表达式值v+后缀v0 + 1v0+v一元v0 + 1v-后缀v0 1v0-v一元v0 1l “+”和和“-”即可以缀在变量的前边,属于一元运算符;即可以缀在变量的前边,属于一元运算符;l “+”和和“-”也可以缀在变量的后边,属于后缀运算符。也可以缀在变量的后边,属于后缀运算符。以变量以变量v为例,设为例,设v中原有值中原有值v0 ,这两个运算符的含义如下表,这两个运算符的含义如下表 可以看出:可以看出:v+ 和和 +v 对对v的操作都相当于的操作都相当于 v=v+1 ,运算后,运算后v的值都是的值都是v的的原值加原值加1 ,即,即v0+1。但是,

37、整个表达式的结果有区别:但是,整个表达式的结果有区别:1. 表达式表达式 v+ 是先求表达式的值,后对是先求表达式的值,后对v加加1 。结果表达式的值是。结果表达式的值是对对v进行加进行加1之前的之前的v值,即值,即v0 。2. 表达式表达式 +v 是先对是先对v加加1 ,后求表达式的值。结果表达式的值是,后求表达式的值。结果表达式的值是对对v进行加进行加1之后的之后的v值,即值,即v0+1 。v- v- 和和 -v -v 的意义与的意义与 v+ v+ 和和 +v +v 类似,不再赘述。类似,不再赘述。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军333

38、3 main() int i=8; printf(%dn,+i); printf(%dn,-i); printf(%dn,i+); printf(%dn,i-); printf(%dn,-i+); printf(%dn,-i-);输出结果为:9889-8-9C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军34343.7 类型转换类型转换对对 C 而言,各种不同类型及其数据是有区别的。而言,各种不同类型及其数据是有区别的。C对对参与运算的运算分量类型参与运算的运算分量类型在参数结合时对参数的类型在参数结合时对参数的类型都有一定的限制或进行一些必要的转换。都有

39、一定的限制或进行一些必要的转换。实质上,实质上,C的简单类型只有两类:的简单类型只有两类:各种浮点类型各种浮点类型各种整数类型各种整数类型但是每一类类型中根据数据存储长度以及表示形式不同,又但是每一类类型中根据数据存储长度以及表示形式不同,又分成若干类型。分成若干类型。 在在C中各种类型数据进行混合运算遵循一个隐式转换中各种类型数据进行混合运算遵循一个隐式转换规则进行自动类型转换,规则进行自动类型转换,除此之外,除此之外,C还提供显式的强制类型转换运算。还提供显式的强制类型转换运算。 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3535双目运算和三目运

40、算隐式转换规则:双目运算和三目运算隐式转换规则:向类型高的运算分量转换,把短类型转换成长类型、把整数类型转换成浮点类型、把有符号类型转换向类型高的运算分量转换,把短类型转换成长类型、把整数类型转换成浮点类型、把有符号类型转换成无符号类型。下图给出这种转换的规律。成无符号类型。下图给出这种转换的规律。 long doubledoublefloatlongunsigned int unsigned shortint char 、short l横向的箭头表示只要遇到相应类型一定按箭头方向转换成左方的类型。横向的箭头表示只要遇到相应类型一定按箭头方向转换成左方的类型。 l纵向箭头表示按箭头方向从下向上

41、类型一个比一个高。纵向箭头表示按箭头方向从下向上类型一个比一个高。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3636强制类型转换强制类型转换n形式:(类型说明符) (表达式)n例: (double)a ; (int)(x+y) ; (float)(5%3)n区别: (int)x+y 和 (int)(x+y)n强制类型转化的种类o系统自动进行类型转换o用户强制类型转换o void main()o float x; int i;o x=3.6; i = (int)x;o printf(x=%f,i=%d ,x,i);o o运行结果如下:o x =3.60

42、0000,i = 3C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3737赋值运算的动作是(要求当赋值运算的动作是(要求当e与与v赋值兼容)赋值兼容) :1.计算赋值运算符右端表达式计算赋值运算符右端表达式e的值;的值;2.若若e与与v赋值不兼容,把赋值不兼容,把e的值按赋值转换规则转换成的值按赋值转换规则转换成赋值运算符左端赋值运算符左端v的类型;的类型;3.把转换后的值送入把转换后的值送入v中;中;经过赋值运算后,表达式经过赋值运算后,表达式“v = e”的值为最后送入的值为最后送入v中的值。在赋中的值。在赋值运算过程中,要把值运算过程中,要把e的类

43、型转换成的类型转换成v的类型。的类型。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军38383.8 输入输出输入输出输入:指把数据从外部设备(磁盘、键盘、磁带、传感输入:指把数据从外部设备(磁盘、键盘、磁带、传感器、器、 )上读入计算机内,针对高级语言也可以认为读入程序)上读入计算机内,针对高级语言也可以认为读入程序中某变量内。中某变量内。输出:指把计算机内部的数据送到外部设备(磁盘、显示器、输出:指把计算机内部的数据送到外部设备(磁盘、显示器、打印机、打印机、 )上去。)上去。 C把一切外部设备全部定义为文件,所以把一切外部设备全部定义为文件,所以C的

44、的I/O(输(输入入/输出)全部是针对文件的,并通过标准函数库中若干输出)全部是针对文件的,并通过标准函数库中若干标准函数实现标准函数实现I/O。 所以所以:l输入是从文件将数据读入到计算机内;输入是从文件将数据读入到计算机内;l输出是将计算机中的计算结果送到文件上。输出是将计算机中的计算结果送到文件上。 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军3939C不提供不提供I/O语句,而是通过标准函数库中若干标语句,而是通过标准函数库中若干标准函数实现准函数实现I/O。若想使用某标准函数库中的函数必须使用编译预处若想使用某标准函数库中的函数必须使用编译预

45、处理命令理命令“#include”引用相应标准函数库的头文件。引用相应标准函数库的头文件。该命令的格式是:该命令的格式是: #include 任何任何C程序如果使用程序如果使用I/O函数,必须引用标准函数,必须引用标准I/O函数函数的标准头文件的标准头文件“stdio.h” ,也就是在程序中必须包含如下,也就是在程序中必须包含如下程序行:程序行: #include C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军40403.8.1字符输入字符输入C提供的字符输入函数是一个无参函数,调用该提供的字符输入函数是一个无参函数,调用该函数的一般格式是:函数的一般格

46、式是: getchar() 其操作是从标准输入设备(也就是键盘)上读入一个其操作是从标准输入设备(也就是键盘)上读入一个字符,作为函数值。字符,作为函数值。读入的字符一般要保存到一个字符型变量中,若读入的字符一般要保存到一个字符型变量中,若变量变量ch是字符类型的,经常以如下形式使用该函数。是字符类型的,经常以如下形式使用该函数。 ch=getchar() ;C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军41413.8.2字符输出字符输出C提供字符输出函数提供字符输出函数putchar,调用该函数的一,调用该函数的一般格式是:般格式是: putchar

47、( int型表达式型表达式 )其操作是把其操作是把int型表达式计算出的值转换成字符型表达式计算出的值转换成字符类型值输出到标准输出设备(也就是显示器)上。类型值输出到标准输出设备(也就是显示器)上。l 如果操作正确把输出的如果操作正确把输出的int型整数作为函数值;型整数作为函数值;l 如果错误,则如果错误,则EOF( -1 )作为函数值。)作为函数值。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军42423.8.3格式输入格式输入标准函数标准函数scanf是是C提供的格式输入函数,调用它的一般格提供的格式输入函数,调用它的一般格式是:式是: scan

48、f ( , )其操作是从标准输入设备(键盘)上读入一系列数据,按格其操作是从标准输入设备(键盘)上读入一系列数据,按格式控制的要求进行转换并送入输入列表所列的诸变量中。返回的式控制的要求进行转换并送入输入列表所列的诸变量中。返回的函数值为:函数值为:l 输入的数据个数输入的数据个数 如果输入操作正确;如果输入操作正确;l EOF 否则。否则。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4343输入列表输入列表 输入列表由逗号输入列表由逗号“,”分隔开的若干输入表项组成;分隔开的若干输入表项组成;每个输入表项是一个变量的指针(变量的地址)。运算符每个输入

49、表项是一个变量的指针(变量的地址)。运算符“&”是求变量指针的运算。所以输入列表一般应该有形式是求变量指针的运算。所以输入列表一般应该有形式 &v1 , &v2 , &v3 , , &vn其中其中v1 , v2 , , vn 是是n个变量。个变量。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4444格式控制格式控制 格式控制是一个常量字符串。其中含有各种以百分号开格式控制是一个常量字符串。其中含有各种以百分号开始的格式控制符,下表列出常用的始的格式控制符,下表列出常用的scanf函数格式控制符。函数格式控制符。输

50、入数据类型输入数据类型输入要求输入要求格式控制符格式控制符整数整数带符号带符号10进制整数进制整数%d无符号无符号10进制整数进制整数%u单个字符单个字符%c字符串字符串%s浮点数浮点数以小数形式或指数形式以小数形式或指数形式%f %e%g如下是一个格式控制:如下是一个格式控制: “%d%c%f%d”C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4545执行执行scanf函数时,计算机按照格式控制中控制符的要求转换外部设函数时,计算机按照格式控制中控制符的要求转换外部设备上的输入流(实际是字符流),把它变成计算机内部数据。备上的输入流(实际是字符流),把

51、它变成计算机内部数据。格式控制格式控制 “%d%c%f%d”将如下转换外部设备上的输入:将如下转换外部设备上的输入:首先按照整数的语法转换出一个整数;首先按照整数的语法转换出一个整数;再转换出一个字符;再转换出一个字符;再按浮点数语法转换出一个浮点数;再按浮点数语法转换出一个浮点数;最后再按整数的语法转换出一个整数。最后再按整数的语法转换出一个整数。显然格式控制符要与输入列表上的变量匹配。显然格式控制符要与输入列表上的变量匹配。事实上格式符是按输入列表上相应变量的需要来安排的。事实上格式符是按输入列表上相应变量的需要来安排的。输入数据要满足输入列表上变量和格式控制的要求。输入数据要满足输入列表

52、上变量和格式控制的要求。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4646 设设i为为 int类型变量、类型变量、ch为为char类型变量、类型变量、v为为float类型变量、类型变量、k为为int类类型变量,键盘上输入数据为型变量,键盘上输入数据为 1234 123e+2 987则函数调用则函数调用 scanf ( “%d%c%f%d” , &i , &ch , &v , &k )的结果是:的结果是:变量变量 i 得到整数数据得到整数数据1234 ;变量变量 ch 得到字符型数据空格(得到字符型数据空格(ASCII码

53、码32 ,是紧跟是紧跟1234的的4后边的那个空格字符);后边的那个空格字符);v 得到浮点型数据得到浮点型数据12300 ;k 得到整数数据得到整数数据987 。 C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4747格式输入与输出scanf各修饰符是可选的,这些修饰符是:各修饰符是可选的,这些修饰符是:(1 1)字段宽度)字段宽度例:例:scanf(%3dscanf(%3d,&a)&a);输入;输入123456123456,按宽度输入一个整数,按宽度输入一个整数123123赋给变量赋给变量a a(2 2) l l和和h h可与可与d

54、d、o o、x x一起使用,一起使用,l l表示输入数据为长整数,表示输入数据为长整数,h h表示输入数据为短整数,例:表示输入数据为短整数,例:scanf(%ld%hd,&x,&iscanf(%ld%hd,&x,&i) );x x按长整型读入,按长整型读入,i i按短整数读入。按短整数读入。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4848格式输入与输出scanf2.2.普通字符普通字符普通字符包括空格、转义字符和可打印字符。普通字符包括空格、转义字符和可打印字符。(1)(1)空格空格在有多个输入项时,一般用空格或回

55、车作为分隔符,若以空格作分隔符,则当在有多个输入项时,一般用空格或回车作为分隔符,若以空格作分隔符,则当输入项中包含字符类型时,可能产生非预期的结果,例如:输入项中包含字符类型时,可能产生非预期的结果,例如:scanf(%d%c,&a,&chscanf(%d%c,&a,&ch) ); 输入输入32 q32 q期望期望a=32a=32,chch=q=q,但实际上,分隔符空格被读入并赋给,但实际上,分隔符空格被读入并赋给chch。 (2)(2)可打印字符可打印字符例如:例如:scanf(“ascanf(“a=%d=%d,a=%da=%d,b=%cb=%c,&

56、a&a,&b&b,&ch&ch););当输入为:当输入为:a=1,b=2,c=q a=1,b=2,c=q 即:即:a=1a=1,b=2b=2,chch=q=q若输入为若输入为1 2 q 1 2 q 除除a=1a=1正确赋值外,对正确赋值外,对b b与与chch的赋值都不能正确赋值。这些不的赋值都不能正确赋值。这些不打印字符应是输入数据分隔符,打印字符应是输入数据分隔符,scanfscanf在读入时自动去除与可打印字符相同的字在读入时自动去除与可打印字符相同的字符。符。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军4

57、949格式输入与输出scanf注意 void main() int a,b,c; printf(input a,b,cn); scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%d,a,b,c); n在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。n在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军5050格式输入

58、与输出scanf注意o使用scanf函数还必须注意以下几点n scanf函数中没有精度控制,如: scanf(“%5.2f”,&a); 是非法的。不能企图用此语句输入小数为2位的实数。nscanf中要求给出变量地址,如给出变量名则会出错。n如 scanf(“%d”,a);是非法的,应改为scnaf(“%d”,&a);才是合法的。n在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 例:scanf (%c%c%c,&a,&b,&c); 输入为 def 时,a=d,b=e,c=f 输入为 d e f 时,a=d,b= ,c=eC

59、 C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军51513.8.4格式输出格式输出标准函数标准函数printf是是C提供的格式输出函数,调用它的一般格提供的格式输出函数,调用它的一般格式是:式是: printf ( , ) 其操作是按照格式控制的要求,把输出列表上的数据转换成字符其操作是按照格式控制的要求,把输出列表上的数据转换成字符串,并送入标准输出设备(显示器)上输出。串,并送入标准输出设备(显示器)上输出。返回的函数值为:返回的函数值为:o 输出的字符个数输出的字符个数 如果输出操作正确;如果输出操作正确;o EOF 否则。否则。C C程序设计程序设计

60、 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军5252输出列表输出列表 输出列表由逗号输出列表由逗号“,”分隔开的若干表分隔开的若干表达式组成。每个表达式计算出一个值,该值达式组成。每个表达式计算出一个值,该值将被按照格式控制中相应控制项的格式符的将被按照格式控制中相应控制项的格式符的要求进行转换,变成字符流被输出。输出列要求进行转换,变成字符流被输出。输出列表有形式表有形式 e1 , e2 , e3 , , en 其中其中e1 , e2 , , en 是是n个表达式。个表达式。C C程序设计程序设计 第三章第三章 简单程序设计主讲:高利军简单程序设计主讲:高利军5353格式控制格式控制 printf的格式控制与的格式控制与scanf的格式控制一样,也是一个常的格式控制一样,也是一个常量字符串。其中含有任意普通字符和各种以百分号开始的格量字符串。其中含有任意普通字符和各种以百分号开始的格式控制符。下表列出常用的式控制符。下表列出常用的 printf 函数格式控制符。函数格式控制符。格式符格式符使用形式使用形式m省缺值省缺值N省缺

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论