C语言程序设计_第2章 C语言基础.ppt_第1页
C语言程序设计_第2章 C语言基础.ppt_第2页
C语言程序设计_第2章 C语言基础.ppt_第3页
C语言程序设计_第2章 C语言基础.ppt_第4页
C语言程序设计_第2章 C语言基础.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 C语言基础,北京科技大学,C 语言程序设计,2,本章主要内容,本章介绍C语言的基础,包括: C语言使用的合法字符?单词? 字符集 标识符:单词的组成原则, 程序处理的对象是数据 数据类型:数据的存储、参与的运算 数据表现形式:变量和常量 数据操作:运算符和表达式 C语言的语句类型,3,例如:,【例2.1】计算圆的面积,半径为 5 cm。 程序如下:,main( ) float r, area ; r=5 ; area=3.14*r*r; printf (%fn , area) ; ,运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14 对数据进行的运

2、算:* 、= 数据的名称是标识符,例jc2_1,4,分析:,计算机操作处理时,要表示各种处理的对象 出现在程序的符号和字符可以使用英文字母吗? 可以使用中文字符吗? 合法的字符集合 半径用 r表示 ,面积 用 area 表示。对象可以取什么样的名称? 标识符: 可以用作各种对象的名字,涉及C语言最基本组成,5,分析:,计算机操作处理时,首先要解决数据的存放: 事先要在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值? 数据 5 和 3.14 与 r 、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理

3、? 对整数 5 和小数3.14 ,计算机存放时是否有区别?,涉及数据类型 的基本知识,6,2.1 C程序的符号系统,主要内容: 基本字符 标识符,7,2.1.1 基本字符,大写英文字母:A B C X Y Z 小写英文字母:a b c x y z 数字:0 1 2 9 空白符:空格符、换行符、制表符 特殊字符:+ - * / ( ) _ = ! # % . , ; : “ | m= 65448; printf(nm=%dn,m); printf(m=%un,m); cout m :(short int)m endl; ,输出结果: m=-88 m=65448 65448 : -88,按有符号数

4、输出,按无符号数输出,20,说明2:整数溢出问题:超出范围,系统为short 型数分配的存储空间为: 16 bit (2Byte),=215-1=32767,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,问题:上数再加1是多少?,=-215=-32768,表示范围:-32768 32767,使用中注意数的范围,有符号short型整数的最大值,有符号short型整数的最小值,21,例如:,void main( ) short int a,b; a= 32767; b=a+1; printf(“a=%dnb=%dn“

5、,a,b); ,输出结果: a = b=,32767,-32768,22,2.2.2 实型数据,1实型数据的类型 单精度实型数据 float,分配4 Byte 双精度实型数据double,分配 8 Byte 2实型数据的存储,单精度实型,指数部分,小数部分,小数的符号位,指数的符号位,23,实型数据的类型及规定,C标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。 一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。,24,例如:,void main( ) float x=12345.54321; double y=4455

6、66778899.987654321; printf(“x=%fny=%fn“,a,b); ,输出结果: x= y=,有效数字的具体含义,12345.542969,445566778899.987670,25,2.1.3 字符型数据,字符型数据char,分配 1 Byte 字符型数据是指字母、数字、各种符号等用ASCII值表示的字符 例如 a 是一个char类型数据,称作字符常量,存储:,0 1 1 0 0 0 0 1,最高位为0,26,2.1.4 空类型(void),通常与指针或函数结合使用 eg. void main() ,27,2.3 常量、变量,主要内容: 常量 变量,28,2.3.1

7、 常量,在运行程序的过程中值保持不变的量 1整型常量 十进制:09 八进制:07,以 0开头 十六进制:09,AF/af,以 0 x或 0X 开头,例如: 100 -8 0 +123 010 024 0100 073 0 x38 0 x10 0X10 0XFF 0 x0a,29,1. 整型常量,注意: 十六进制常量中可以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数字 8 或 9 例如:018、0921非法,可以表示成8进制,10进制和16进制,30,说明. 整型常量的类型,整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0 x100l 整

8、型常量后面加u或U,则认为是unsigned型 例如:15u、234u、 017u、0123u 0 xFu、0 xACu 15Lu、543Lu,31,2. 实型常量,十进制形式 1.0 1. +12.0 -12.0 0.0 指数形式 1e3 1.8e-3 -123E-6 -.1E-3,指数只能是整数,而尾数则可以是整数也可以是小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法 实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型 例如:3.5f、1e2F,32,3. 字符型常量,可视字符常量 单引号括起来的单个可视字符 例如:a、A 、+ 、3

9、、 等 转义字符常量 单引号括起来的 与可视字符组合,例如:,例ex2_4,33,4. 字符串常量,用双引号括起的一个字符序列 例如:ABC、123、a、 nt nGood morning 字符串常量的长度 : 所包含的字符个数 字符串常量的存储方式:,所占存储单元数:串长度1 例如:,字符串 结束标记,34,说明 字符串常量与字符常量,35,5. 符号常量,以标识符来代表的常量 事先编译预处理命令define定义 编译时先由系统替换为它所代表的常量,再进行编译 例如:,#define LEN 2.5 main( ) float a,b; a= 2*3.14 *LEN; b=3.14*LEN*

10、LEN; printf(a=%f,b=%fn,a,b); ,编译前系统进行替换,36,5. 符号常量,main( ) float a,b; a= 2*3.14 *2.5; b=3.14*2.5*2.5; printf(a=%f, b=%fn,a,b); ,define是编译预处理命令,必须以“#”开头 编译预处理命令在后续章节会继续讨论。,替换为,37,2.3.2 变量,1. 变量的有关概念 在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。 变量必须“先定义后使用” 系统为变量分配存储单元,存储变量的值。 编写程序时通过变量名来存、取变量值。,例如: 有变量a 它的值

11、是510,38,2. 变量定义,变量定义的一般格式: 数据类型说明符 变量列表; 例如:int i, j; long k, m; float x,y; char ch1,ch2;,变量名: 必须使用合法的标识符作变量名 不能使用关键字为变量命名,多个变量之间用,分隔 变量必须先定义后使用,39,说明: 变量定义注意事项,多个变量之间用,分隔 变量必须先定义后使用,int i,j; i = j = 1; int i, int j; int a; b=10;,40,3. 变量的初始化:,允许在说明变量的时候对变量赋初值。 例如:int a=5,b=10+2; double x=23.568,y ;

12、 char ch1=a,ch2=66,ch3=142; 表示定义变量并对变量存储单元赋值。 错误的初始化: int a=3+b,b=5; float m=n=23.16;,41,2.4 运算符和表达式,主要内容: 算术运算符和算术表达式 赋值运算符和赋值表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 位运算符和位运算表达式 条件运算符和条件表达式 逗号运算符和逗号表达式 其他运算符及其运算,42,运算符的有关概念,作用: 对运算对象完成规定的操作运算 类型: 按运算对象分: 单目、双目、三目 按功能分: 算术、赋值、关系、逻辑 条件、逗号、位、其他,43,运算符的优先级和结合性,优先级

13、 指各种运算符号的运算优先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + -,结合性 指运算符号和运算对象的结合方向 分为:从左向右(左结合)和从右向左(右结合) 例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a= b = 5 ( C语言规定见教材 附录),44,本章涉及的运算符,+ - * / % + - + - = += -= *= /= %= a=a+1 表达式的值为5,且 a=6, b=5,例ex2_9,49,说明:,+ 和 - 的运算对象只能是变量(或运算结果是变量的表达式), 不能是常量(或运算结果是数值的表达式)。 例如: 5+、(a+2)+ 不合法

14、。 具有右结合性,结合方向为从右到左。 例如: a+ 等价于 -(a+) 如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符 例如: i + j 等价于 ( i+)+j -i+-j 等价于 -(i+)+(-j),例ex2_8,50,赋值运算,赋值运算符(右结合) = += -= *= /= %= x = 6.89; 后 x= 整型 赋给 实型 例如: float x; x=6; 后 x = 赋值号与数学中的等号含义不同 例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,6,6.0,根据左值确定表达式的类型,右边精度高,会丢失一部分数据,53,关系

15、运算,关系运算符 (左结合) = =c 等价于 a = ( b=c ) 与 (a=b)=c 不等价 关系运算符优先于赋值,低于算术,54,说明:,关系运算的结果应该是逻辑值。C语言用数值用 1 表示逻辑真, 0 表示逻辑假 例如: 75 的值是 1,57 可以吗? ab的值是 0, ab 的值是1 即关系表达式的值:0 或1 关系运算符两边的运算对象的数据类型不同时,系统自动转换成相同数据类型后再进行运算(转换规则后面介绍),55,说明:,关系表达式中含有多个关系运算符时,注意与数学式的区别 例如: 6x0 数学式:表示x的值在0到6之间 关系表达式:表示6与x的比较结果(0或1)再与0比较

16、实型数可进行大于或小于比较,但通常不进行 = 或 != 的关系运算 float x,y; x=y=1.25; fabs(x-y)1e-5,56,逻辑运算符,逻辑运算符 char ch; 可以对变量a、ch、student 进行,68,长度运算符 sizeof,为单目运算符 运算对象只能是变量名或数据类型标识符 运算结果为该变量或该数据类型的长度,main( ) int a=5; double x; printf(%d %d ,sizeof(int),sizeof(a); printf(%d %d ,sizeof(double),sizeof(x); printf(%d %dn,sizeof(f

17、loat),sizeof(char); ,输出结果: 4 4 8 8 4 1,69,2.5 数据类型转换,25+48.5*A-3.56e+3 是合法的表达式吗? 不同类型的操作数,表达式如何计算? 类型转换 自动类型转换,强制类型转换,70,自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,2.5.1 数据类型的自动转换,转换原则:,例如有定义: int a; char ch; 表达式: a-ch*2+35L a-ch*2+ 35.,71,赋值运算中的类型转换, = 小数部分自动补0, = 自动舍去实型表达式的小数部分(注意不进行四舍五入) = = 自动截取表达式值

18、的低字节赋值,舍去高字节 = = 自动给高字节补0 或补1,72,2.5.2 数据类型的强制转换,强制转换的一般形式 (类型名) 表达式 例如: (int)( b+3*x)%3 1/(float)a+6,注意: (float) 22/5 与 (float) (22/5) 相同吗 错误的类型转换: (int) b=a+5 b= int (3*a),73,例如:,表达式: 150+b*2-12.456 b=(+a)-2 a /= a *= (a = 2) f=abc -a |+b float function( int, int);,C程序由函数组成。函数的格式: 函数名(参数表) 说明部分; 执行部分; ,数据类型说明语句,可执行语句,76,表达式后面加一个分号,构成表达式语句 x=3; y=y+5; x=a-b ,2 表达式语句,注意: 分号是语句必不可少的一部分 单独的一个分号“;” 构成一个空语句 例如:;(空语句,是最简单的C语句),77,3 控制语句,1选择分支控制语句 if ( ) else switch ( ) 2循环控制语句 for ( ) while ( ) do while ( ) 3其他控制语句 break、continu

温馨提示

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

评论

0/150

提交评论