PPT03_1第三章--流程设计---之C语言基本元素_第1页
PPT03_1第三章--流程设计---之C语言基本元素_第2页
PPT03_1第三章--流程设计---之C语言基本元素_第3页
PPT03_1第三章--流程设计---之C语言基本元素_第4页
PPT03_1第三章--流程设计---之C语言基本元素_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 流程控制 3.1 变量及变量声明3.1.1 变量 变量(variable):在程序执行期间值可变的数据对象。 值:在程序执行的某一时刻变量所具有的值;值:在程序执行的某一时刻变量所具有的值;属性属性 名字(名字(name)类型(类型(type)作用域(作用域(scope) 存储区(存储区(storage area)地址(地址(address) 重要!2.7183v:0F000:变量地址变量名变量值变量的存储区 设有变量设有变量v ,分配在内存,分配在内存0F000开始的一开始的一块存储区中,现行值为块存储区中,现行值为2.7183 ,如图所示。,如图所示。3.1.2 变量声明属性由变量

2、声明规定。一个变量声明的形式如下:一个变量声明的形式如下: T id , id =初值初值, . , id ; 1.id 是标识符,代表相应变量的名字;是标识符,代表相应变量的名字; 2.T 是类型,可以是任何一种类型符;是类型,可以是任何一种类型符;注意!注意! 3.变量声明位置决定了它的作用域变量声明位置决定了它的作用域变量声明例子: int i , j, k ; char c ; int t; float amount , total ; bool flag ; enum red,blue,green color ;3.1.3 变量形态变量作为程序语言的一个成分,在程序中有三种出现状态

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

4、变量就变成了属类型的)一个数据。一旦为变量赋值,该变量就变成了“值有定义的值有定义的”。 例如:变量例如:变量 c 若给它赋值若给它赋值 P 后,它便是后,它便是“值有定值有定义的义的”,并且值为,并且值为 P 。 P 若再给它赋值若再给它赋值 S ,则,则 c 的值就变成了的值就变成了 S ,这时原,这时原来的值来的值 P 便已丢失。便已丢失。 S 3.1.4 变量地址在C程序中,经常使用一个变量的存储区及其地址。因此 C 给出一个运算符&例如:变量 v,运算 &v 将得到 v 的地址 0F000 。该地址也称为 v 的指针,运算符 & 也称为求指针运算符,运算 &v 也称为求 v的指针。3

5、.1.5 变量初始化变量赋初值 (Initialization) 在定义变量的同时对变量赋值(初始化) 举例 int a=2*3;/*相当于 int a; a=6;*/ int a, b=3;/*对b赋初值,a没有初值*/ int b, c, a=b=c=100;/*对三个变量赋同样的初值*/ 变量使用前,一般应先对它赋值 int s=0;/求和变量s;1.一切变量都必须一切变量都必须声明;声明; 2. 在同一作用域内,在同一作用域内,不许重名;不许重名; 3. 变量的声明必变量的声明必须出现在使用之前;须出现在使用之前;4. 在变量声明中给在变量声明中给变量赋初值处,相变量赋初值处,相应常量

6、表达式必须应常量表达式必须是可计算的。是可计算的。3.2 表达式3.2.1 表达式的结构表达式(expression)是 C 程序完成各类运算的主要部分,由运算符和运算分量组成的符合语法规则的式子。表达式 基本表达式 后缀表达式 一元表达式 二元表达式 条件表达式 逻辑表达式 赋值表达式 顺序表达式基本表达式 标识符字面常量 (表达式)(1)基本表达式)基本表达式C表达式的最底层:表达式的最底层:标识符标识符字面常量(直接变量)字面常量(直接变量)cf.符号常量符号常量括号表达式括号表达式 由基本表达式(运算分量)和运算符相互组由基本表达式(运算分量)和运算符相互组合可以构成各种复杂的表达式。

7、例如:合可以构成各种复杂的表达式。例如: x,max,min /基本表达式;基本表达式; (x+y) 、(、(r-s)/用括号括上的基本表达式;用括号括上的基本表达式; r=(x+y)*5-间接选择+ -+ -自增、自减( (类型名)初始化列表 复合字面值+ -+ -自增、自减前缀从右到左15sizeofsizeof长度一元 按位取反! !逻辑非- +- +算术负、正& &地址* *间接访问( (类型名) )类型转换14* * / %/ %算术乘、除、求余数二元从左到右13+ -+ -算术加、减12左移、右移11 = =关系运算10= != !=判等运算9& &按位与8 按位异或7| |按位或

8、6&逻辑与5|逻辑或4? :? :条件表达式三元从右到左3= += -= = += -= * *= /= %= = /= %= = &= = |= &= = |=赋值二元2, ,顺序表达式从左到右1运算符的结合方向规则 单目运算符的结合方向都是“从右向左” !、+、-、+(正号)、-(负号) *(指针运算符)、&(地址运算符) sizeof、(type) 赋值运算符的结合方向是“从右向左” 三目运算符的结合方向是“从右向左” 唯一的三目运算符:条件运算符?: 其他运算符的结合方向都是“从左向右”1.自增、自减运算符 形式 +i, -i使用i之前,先使i的值加/减1 i+, i-使用i之后,再使

9、i的值加/减1v说明+i和-i的值是加/减1之后i的值i+和i-的值是加/减1之前i的值+和-只能用于变量,不能用于常量和表达式+和-的结合方向是“自右向左”自增、自减运算符举例int i=3, j, a, b=1, c=2;j = +i;/* i=i+1, j=i, i=4, j=4 */j = i+;/* j=i, i=i+1, i=5, j=4 */j = -i+;/* -(i+), i=6, j=-5 */j = i+*2;/* (i+)*2, i=7, j=12 */a = (b+c)+;/* 非法! */a = 34+;/* 非法! */2.逗号运算符 逗号运算符 , exp1,

10、exp2 逗号运算符的优先级最低,“自左向右”结合 逗号表达式的值是exp2的值 exp1和exp2都可以又是“逗号表达式” 把多个表达式组合成一个表达式使用 举例 x=(a=3, 6*a) /* a=3, x=18 */ x=a=3, 6*a /* a=3, x=3 */ 在书写在书写 C 表达式时必须注意与通常数学表达式的区别:表达式时必须注意与通常数学表达式的区别: 1. 所有字符必须写在一条水平线上,所有字符必须写在一条水平线上, 上角标上角标 下角标下角标 分数线等。分数线等。 2. 、 ab 、 ab a*b 3. 除了除了下标使用方括号下标使用方括号以外,其他括号必须用以外,其他

11、括号必须用圆括号圆括号。 4. a y b ( a y ) & ( y b ) 5. 由两个(或以上)字符构成的运算符,中间不许夹有空由两个(或以上)字符构成的运算符,中间不许夹有空格等分隔符。格等分隔符。 6.适当加括号是好习惯。适当加括号是好习惯。3.2.2 表达式的计算表达式的计算顺序是不确定的。大致遵循如下规则:1. 先计算优先级高的运算符规定的运算。2.若两个运算符同级且相邻,则应按运算符结合律的规定从左向右或从右向左计算。我们已经学习了:我们已经学习了:算术运算符(算术运算符(+ 、- 、* 、/ 、%)、)、关系运算符(关系运算符( 、=)、)、判等运算符(判等运算符(= 、!=

12、)、)、逻辑运算符(!逻辑运算符(! 、& 、| )、)、求变量指针运算符(求变量指针运算符( & )。)。1. 算术算术2.关系、判等关系、判等3.逻辑逻辑 l算术算术表达式的优先级高于关系表达式,表达式的优先级高于关系表达式,l关系关系表达式的优先级高于判等表达式,表达式的优先级高于判等表达式,l判等判等表达式的优先级高于逻辑表达式。表达式的优先级高于逻辑表达式。在算术表达式中,在算术表达式中,乘法运算(乘法运算(* 、/ 、%)高于高于加法运算(加法运算(+ 、- )在逻辑表达式中,在逻辑表达式中,l 非运算(!)优先级最高,非运算(!)优先级最高,l 与运算(与运算(&)其次,)其次,

13、l 或运算(或运算( | )优先级最低。)优先级最低。 高高低低布尔型结果布尔型结果运算运算布尔型结果布尔型结果运算运算算术型结果算术型结果运算运算在关系、判等表达式中,在关系、判等表达式中,优先级相等优先级相等例子例子:短路表达式短路表达式a.设设 int u=20、v=30、w=40、x=20、y=50 计算如下算式:计算如下算式:u+20v | w=0 | xx | x+yu+v+w当计算出当计算出u+20v的值为的值为true后,整个表达式为真后,整个表达式为真。b.设设 int n=3,m=6; if (n4&m+4为为false, 所以,整个表达式为假。所以,整个表达式为假。逻辑表

14、达式随堂练例1:名称预测正确性逻辑表达式 有人在赛前预测A、B、C、D、E、F六名选手在百科知识大赛中会按照顺序分获第一到第六名,结果证实这个人猜对了三个人的名次。例2:谁在哪一排全班同学排成六排,A、B、C、D、E、F 六名分站第一排到第六排,已知A不在第一排,A和B前后相邻,C在D前面,E在B前两排,C在F后四排。问A、B、C、D、E、F 六名同学各在哪一排。3.3 语句 程序对数据的操作,表示为语句(statement)。 空语句空语句;表达式语句(表达式语句(cf.表达式)表达式)返回语句返回语句returnbreak语句语句continue语句语句goto语句语句复合语句复合语句 i

15、f语句语句分支语句分支语句 switch 语句语句 do语句语句重复性语句重复性语句 while语句语句 for语句语句简单语句简单语句结构语句结构语句语句语句cf.表达式表达式表达式语句表达式语句x=a+bx=a+b;3.4 赋值最基本的操作带赋值运算符的表达式语句。一般形式: v =e ;其中:l = 是赋值运算符。l v左值(变量),作为赋值运算符左端的运算分量。l e右值是一个表达式,作为赋值运算符右端的运算分量,能计算出一个值。下述语句正确:下述语句正确: firstnumber=1; circumference=2*pi*radius;nextnumber=nextnumber+1

16、;下述形式下述形式错误错误: 1=firstnumber; tength*width=area;3.5 类型转换各种不同类型变量是有区别的。对各种不同类型变量是有区别的。对联合运算、参数结合联合运算、参数结合 参数类型需转换。参数类型需转换。 在在C中进行混合运算中进行混合运算遵循一个隐式转换规则遵循一个隐式转换规则。除此之外,除此之外,C还提供还提供显式强制类型转换显式强制类型转换运算。运算。 n双、三目运算隐式转换规则:向类型高的运算分量转换,短长、整数浮点、有符号无符号。long doubledoublefloatunsigned long longlong longunsigned l

17、onglongunsigned int unsigned char 、unsigned shortint char 、short l横向的箭头表示向左转换横向的箭头表示向左转换。 l纵向箭头表示向上转换。纵向箭头表示向上转换。n强制类型转换形式(类型名)该运算把右侧的运算分量强制转换为括号内的类型。比如: (char)(A+0) char类型的小写q (int)5.2/2 int类型的2(float)5/2 float类型的2.5使用强制类型转换要注意:使用强制类型转换要注意: 1. 类型名必须用括号括上;类型名必须用括号括上; 2. 熟练使用括号,熟练使用括号,eg. 若把若把 (char)

18、(A+0) 写成写成 (char)A+0 ,则得,则得int类型的类型的113 。float x=2.8, y=3.7, z;int a, b, c, d=5, e=2;a=(int)x+y;/* a=5, 2+3.7 = 5 */b=(int)(x+y);/* b=6, (int)(6.5) */c=(int)x;printf(x=%f, c=%dn, x, c);/* x=2.800000, c=2 */z=(float)d/e;/* z=2.5 */例子3.6 基本输入输出 头文件 #include 输入输出函数 字符输出函数putchar 字符输入函数getchar 格式输出函数pri

19、ntf 格式输入函数scanf 字符串输出函数puts 字符串输入函数gets3.6.1 getchar、putchar1.getchar函数说明int getchar(void);从标准输入设备输入一个字符需要输入回车后需要输入回车后,函数才返回参数说明参数说明无参数返回值若成功,返回输入字符的ASCII码值若失败,返回EOF (End of File)2.putchar函数说明int putchar(int c);输出输出一个字符到标准输出设备返回值若成功,返回输出字符的ASCII码值若失败,返回EOF (End of File)getchar函数举例int c;c = getchar()

20、;/* 输入a后回车回车 */putchar(c);/* 输出? */c = getchar();/* 是否需要输入? */printf(c=%dn, c);/* 输出c=? */c = getchar();/* 输入abcd后回车 */putchar(c);/* 输出? */putchar(getchar(); /* 输出? */putchar函数举例 int c, i; putchar(a);/* 输出a */ putchar(n);/* 输出换行符 */ putchar(101);/* 输出e */ putchar(101);/* 输出A */3.7.3格式输入标准函数scanf是C提供

21、的格式输入函数,调用它的一般格式是: scanf ( , )注:输入字符存放于键盘缓冲区内,输入以回车结束输入列表输入列表 输入列表由逗号输入列表由逗号“,”分隔开的若干输入表项组成;分隔开的若干输入表项组成;每个输入表项是一个变量的指针(变量的地址)。运算符每个输入表项是一个变量的指针(变量的地址)。运算符“&”是求变量指针的运算。所以输入列表一般应该有形式是求变量指针的运算。所以输入列表一般应该有形式 &v1 , &v2 , &v3 , , &vn其中其中v1 , v2 , , vn 是是n个变量。个变量。格式控制格式控制 格式控制是一个常量字符串。其中含有各种以百分号开格式控制是一个常量

22、字符串。其中含有各种以百分号开始的格式控制符,下表列出常用的始的格式控制符,下表列出常用的scanf函数格式控制符。函数格式控制符。输入数据类型输入要求格式控制符整数带符号10进制整数%d无符号10进制整数%u单个字符%c字符串%s浮点数以小数形式或指数形式%f %e%g例:例: “%d%c%f%d”键盘上输入数据为键盘上输入数据为 1234 123e+2 987函数调用函数调用 scanf ( “%d%c%f%d” , &i , &ch , &v , &k )结果:结果:变量变量 i整型整型1234 ; ch字符型空格(字符型空格(ASCII码码32 );); v 浮点型浮点型12300 ; k 整型整型987 。 函数scanf举例int i, j;char c;scanf(%d%d, &i, &j); /* 2 3 or 23 or 23 */scanf(i=%d, j=%d, &i, &j); /* i=2, j=3 or i=2,j=3 */scanf(%d%c%d, &i, &c, &j); /* 2 a 3 = i=2, c= , j出错 */ /* 2a 3 = i=2, c=a, j=3 */3.7.4格式输出标准函数printf是C提供的格式输出函数,调用它的一般格式是: printf ( , )

温馨提示

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

评论

0/150

提交评论