大学计算机C语言.ppt

上传人:本田雅阁 文档编号:2226904 上传时间:2019-03-07 格式:PPT 页数:46 大小:603.01KB
返回 下载 相关 举报
大学计算机C语言.ppt_第1页
第1页 / 共46页
大学计算机C语言.ppt_第2页
第2页 / 共46页
大学计算机C语言.ppt_第3页
第3页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《大学计算机C语言.ppt》由会员分享,可在线阅读,更多相关《大学计算机C语言.ppt(46页珍藏版)》请在三一文库上搜索。

1、 -2- 第2章 数据类型与表达式 本 章 内 容 1. C语言的数据类型 2. 常量和变量 3. 整型数据 4. 实型数据 5. 字符型数据 6. 系统函数 7. C运算符概述 8. 算术运算符 9. 关系运算符和逻辑运算符 10. 位运算符与长度运算符 11. 赋值运算符和赋值表达式 12. 逗号运算符和逗号表达式 13. 运算符的优先级与表达式的分类 -3- 第2章 数据类型与表达式 2.1 C语言的数据类型 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 数据类型明显或隐含地规定了在程序执行期间变量或表达式所有可能的 取值范围,以及在这些值上允许进行的操作。 C语言的各种数

2、据类型: 基本类类型 数据类类型 字符型 整型 实实型 双精度实实型 枚举类举类 型 构造类类型 指针类针类 型 空类类型 数组类组类 型 结结构体类类型 共用体类类型 -4- 第2章 数据类型与表达式 2.2 常量和变量 l 常量和符号常量 1常量 在程序运行过程中,其值不能被改变的量称为常量,又叫常数。 常量区分为不同的类型,如100,0,-8为整型常量,25.32, 0.142为实型常量,A,B是字符型常量。 常量不需要事先定义,只在程序中需要的地方直接写出即可。常 量的类型也不需要事先说明,它们的类型是由书写方式自动默认的。 2符号常量 用一个符号(标识符)代表一个常量,例如: #de

3、fine MAXNUM 1000 #define TRUE 1 #define FALSE 0 符号常量的定义格式如下: #define 符号常量 常量 -5- 第2章 数据类型与表达式 2.2 常量和变量 l 标识符与变量 1标识符 在C 语言中,标识符是对变量、符号常量、函数、数组、文件等 用户定义对象的命名。 标识符可以是一个或多个字符。标识符的第一个字符必须是英文 字母或下画线,随后的字符必须是字母、数字或下画线。不能以数 字打头。 下面是一些正确或错误标识符命名的示例。 正确标识符 错误标识符 weight 2x length a|#b color2 red!color save _

4、$123 -6- 第2章 数据类型与表达式 2.2 常量和变量 2变量 在程序运行过程中,其值可以改变的量称为变量。 在C语言中,要求对所有用到的变量 “先定义,后使用”。 例如:定义两个整型变量a、b和三个实型变量x、y、z。 int a,b; float x,y,z; C语言有五种基本数据类型:字符型、整型、实型、双精度实型 、 和空类型。定义这五种类型的变量时须使用的类型说明符分别为 char、int、float、double和void。 -7- 第2章 数据类型与表达式 2.3 整型数据 l整型常量 1不同进制数的使用 十进制整数的表示与通常在算术中的表示一样,例如:321,+321

5、。 八进制整数必须以数字0开头,例如:0123表示(123)8。 十六进制整数必须以0x开头,例如0x123 表示(123)16。 -8- 第2章 数据类型与表达式 2.3 整型数据 l 整型变量 1整型数据在内存中的存放形式 在计算机中,数是用二进制表示的,把一个数连同其符号在计算 机中加以数值化,这样的数称为机器数,机器数可以用不同的码制 (原码、补码)表示。 2整型变量的分类 根据数值的范围将整型变量分为以下六种类型: 有符号基本整型:signed int。 有符号短整型:signed short int。 有符号长整型:signed long int。 无符号基本整型:unsigned

6、 int。 无符号短整型:unsigned short int。 无符号长整型:unsigned long int。 -9- 第2章 数据类型与表达式 2.3 整型数据 类 型占 字 节 数取 值 范 围 int2字节-3276832767 short2字节-3276832767 long4字节-21474836482147483647 unsigned int2字节065535 unsigned short2字节065535 unsigned long4字节04294967295 ANSI标准定义的整数类型 -10- 第2章 数据类型与表达式 2.3 整型数据 3.不同类型的整型常量赋值给整

7、形变量 整型变量可分为int、short int、long int、unsigned int、 unsigned short、unsigned long等类别,将整型常量赋值给上述类 别的整型变量时如何做到类型匹配? l一个整型常数,若值在-32768+32767范围内,可将它赋值给int型 和long int型变量。 l一个整型常数,若值在-2147483648+2147483647范围内,可以赋 值给一个long int型变量。 l常量无unsigned型。但一个非负值的整数可以赋值给unsigned int 型变量,只要它的范围在065535范围内。 l在一个整常数后面加一个小写字母l或

8、大写字母L,则认为是long型 常量。例如,-123l、123L、0L、0775L、0x9EL等。 -11- 第2章 数据类型与表达式 2.3 整型数据 3. 整型变量的定义 对变量的定义,一般是放在一个函数的开头的声明部分。 【例2-1】 main() int a; unsigned int b; long c; unsigned long d; a=-100; b=60000; c=-2123456789; d=4123456789; printf(“a=%d,b=%u,c=%ld,d=%lu“,a,b,c,d); 运行结果为 a=-100,b=60000,c=-2123456789,d=

9、4123456789 -12- 第2章 数据类型与表达式 2.4 实型数据 l 实型常量的表示方法 实型常数也称为浮点数,在C语言中实型常数只使用十进制数表 示,它的书写方式有两种: 小数形式。它是由整数、小数点、小数三部分组成,最多只能省略 其中的整数或小数部分,但不能二者都省略,也不能省略小数点。 例如:123.,-.123,1.23,-1.23,12.0,0.,.0,0.0都是合法的 十进制小数形式。 指数形式。它是由尾数、字母e或E、指数三部分组成。尾数可以是 一个十进制小数形式,也可以是一个整数形式, 如123e-3或123E-3都代表12310-3的值。 注意:字母e(或E)之前必

10、须有数字,且后面指数必须为整数,如- 0.32E-2,2E4,-.23E-2,.0E3,0.E-5,0E0等都是合法的指数形式 ,而E-5,.E2,12.3E5.4却是非法的指数形式。 -13- 第2章 数据类型与表达式 2.4 实型数据 l 实型变量 1实型数据在内存中的存放形式 实型数据是按指数形式存储的。系统 把一个实型数据分成尾数部分和指数部分 分别存放。实型数据在内存中小数点位置 不是固定的,或者说是浮动的,故这种表 示法称为浮点表示法。 2实型变量的定义 对每一个实型变量都应在使用前加以 定义。如 float x,y; 3实型数据的舍入误差 由于实型变量是由有限的存储单元组 成的,

11、因此能提供的有效数字总是有限的 。在有效范围以外的数字将被舍去。由此 可能会产生一些误差。请分析下面的程序 : 【例2-3】分析实型 数据的舍入误差。 main() float a; a=12345.6789; printf(“n%f“,a) ; printf(“n%e“,a) ; 在Turbo C中程序运 行结果为: 12345.678711 1.234568e+002 -14- 第2章 数据类型与表达式 2.4 实型数据 l 双精度型数据 1双精度常数 双精度常数的书写方式与实型常数的书写方式相同,有十进制小数 形式和指数形式两种,比实型数据的范围广、精度高。 2双精度数据在内存中的表示形

12、式 ANSI并未具体规定每种类型数据的长度、精度和数值范围。 微机上常用的C编译系统(如Turbo C、MS C、Borland C)实型数据 : 3双精度变量的定义 双精度类型标识符double前还可加修饰符long,long double 比 double型的精度更高,表示的数值范围更大。 类 型二进制位数有 效 数 字数 值 范 围 float326710-371038 double64151610-30710308 long double128181910-4931104932 -15- 第2章 数据类型与表达式 2.5 字符型数据 l 字符常量 字符常量是用单引号()括起来的单个字符

13、。例如A、!、 #、a、* 等。 除字符常量外,将“”开头的特定字符串称为“转义字符”, 意思是将反斜杠后面的字符串转换成另外的意义。 转义 字符 含 义ASCII代码(十进制) n换行,将当前位置移到下一行开头10 t水平制表(跳到下一个Tab位置)9 b退格,将当前位置移到前一格8 r回车,将当前位置移到本行开头13 反斜杠字符“”92 单引号字符39 “双引号字符34 ddd一到三位八进制数ddd代表的字符ddd (八进制) xhh一到两位十六进制数hh代表的字符hh(十六进制) -16- 第2章 数据类型与表达式 ASCII码键盘ASCII 码键盘ASCII 码键盘ASCII 码键盘

14、27ESC32SPACE33!34“ 35#36$37%3860 63?6465A66B 67C68D69E70F 71G72H73I74J 75K76L77M78N 79O80P81Q82R 83S84T85U86V 87W88X89Y90Z 91929394 95_9697a98b 99c100d101e102f 103g104h105i106j 107k108l109m110n 111o112p113q114r 115s116t117u118v 119w120x121y122z 123124|125126 -17- 第2章 数据类型与表达式 2.5 字符型数据 【例2-4】下面程序中使用

15、了几种转义字符。 main() printf(“abxbcdtefghtijkln“); printf(“xxxxxxxxrmnoptqrstuvwxn“); 程序运行时在显示屏上得到以下结果: abcd efgh ijkl mnopqrst uvwx -18- 第2章 数据类型与表达式 2.5 字符型数据 l 字符变量 字符变量用来存放字符常量, 一个字符变量只能放一个字符。 字符变量的定义形式: char 变量名表列; 例如: char c1,c2; c1=A; c2=B; C语言编译系统规定用一个字 节来存放一个字符,将一个字符 常量赋值给一个变量,实际上是 将该字符的ASCII代码放到

16、存储单 元中。 【例2-5】将字符数据以不同的方式 输出。 main() char c1,c2; c1=A; c2=B; printf(“%c,%cn“,c1,c2); printf(“%d,%d“,c1,c2); A,B 65,66 【例2-6】大小写字母的转换。 main() char c1,c2,c3,c4; c1=A; c2=B; c3=c1+32; c4=c2+32; printf(“%c,%c“,c3,c4); a,b -19- 第2章 数据类型与表达式 2.5 字符型数据 l 字符串常量 定义:字符串就是用两个双引号(“)括起来的若干个字符。 例如,“China“、“883838

17、72“、“AJ200“ 存储:每个字符串尾自动加一个 0 作为字符串结束标志 例如:字 符串“CHINA”在内存中 字符串的长度:字符串中所有字符的个数,其中每个转义字符当 作一个字符。 例如,字符串“China”,、“ABCD“、 “101102x43x44”的长度分别为5、4、6、4。 字符常量与字符串常量不同 没有字符串变量,用字符数组存放 C H I N A 0 a a 0例 a“a” 例: char ch; ch=A; -20- 第2章 数据类型与表达式 2.6 系统函数 l 简例 【例2-7】假设根据自变量x不同的值求下式的值: x7+sinx-log10(x+3) 在C语言中可使

18、用以下程序: #include main() float x,y; scanf(“%f“, y=pow(x,7)+sin(x)-log10(x+3); printf(“%f“,y); -21- 第2章 数据类型与表达式 2.6 系统函数 函数:是可以被调用的一段程序。 库函数:软件开发商编写了很多标准函数,作为运算符的补充,供用 户调用,称之为库函数或系统函数。 库函数存储在扩展名为.lib的文件中。 按库函数类划分为:数学函数、字符函数、字符串函数、输入输出 函数、动态存储分配函数等。其声明分别包含在math.h、ctype.h、 string.h、stdio.h和stdlib.h等文件中。

19、如果程序需要调用这些库 函数,就要在源程序文件中使用文件包含命令: #include 或 #include“文件名“ 输入输出函数scanf()和printf()也是库函数,称为标准输入输出 函数,它们的声明包含在文件stdio.h中。由于Turbo C允许使用标 准输入输出函数的时候省略头文件,所以上述例子中我们未使用 #include。 -22- 第2章 数据类型与表达式 求tg x的值doubledoubletan(x)tan 求x的平方根,x0doubledoublesqrt(x)sqrt 求sin x的值doubledoublesin(x)sin 产生9032767的随机整数intr

20、and()rand 求xy的值doubledoublepow(x,y)pow 求log10x的值,x0doubledoublelog10(x)log10 求ln x的值,x0doubledoublelog(x)log 求ex的值doubledoubleexp(x)exp 求cos x的值,x的单位为弧度doubledoublecos(x)cos 求x的反正切doubledoubleatan(x)atan 求x的反正弦,-1x1doubledoubleasin(x)asin 求x的反余弦,-1x1doubledoubleacos(x)acos 求x的绝对值intintabs(x)abs 功 能

21、说 明函数值类型自变量类型调用形式函 数 名 常用数学函数 -23- 第2章 数据类型与表达式 2.7 C运算符概述 lC的运算符有以下几种: 算术运算符:(+、-、*、/、%),自加自减运算符(+、-)。 类型转换运算符((类型符))。 关系运算符(、=、=、!=)。 逻辑运算符(!、 j=i+; k=+i; printf(“%d,%d,%d“,i,j,k); -26- 第2章 数据类型与表达式 2.8 算术运算符 说明: +和-运算符只能用于变量,不能用于常量或表达式。 分析:(a + b)+ ? +和-的结合方向是“自右至左“。 例如:-x+ 相当于-(x+) -27- 第2章 数据类型

22、与表达式 2.8 算术运算符 l 类型转换运算符及类型转换 类型转换运算符 l 一般形式:(类型名)(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 l 说明:强制转换得到所需类型的中间变量,原变量类型不变 -28- 第2章 数据类型与表达式 2.8 算术运算符 类型转换 当表达式中出现不同类型的操作数时,要按一定的规则将其转换为 相同的类型。遵循以下转换规则: 【例2-8】设a是整型变量,其值为2,c是字符变量,其值为A,x是 实型变量,其值为1.5,则表达式: x+c*a/10-3/2 高 double float long unsign

23、ed 低 int char, short 横向朝左的箭头表示必定的转换。 纵向箭头表示当运算对象为不同类 型时转换的方向。低级类型转换为 高级类型。 转换是由系统自动进行。 -29- 第2章 数据类型与表达式 2.9 关系运算符和逻辑运算符 l 关系运算符 115+4!=20-2不等于!= 0A=C等于= 1W=K大于等于= 0ab大于 07*2 = 7+a*3 图图2-2 运算顺顺序 -31- 第2章 数据类型与表达式 2.9 关系运算符和逻辑运算符 l 逻辑运算符 C语言中提供了三种逻辑运算符: 单目逻辑运算符:!(逻辑“非”)。 双目逻辑运算符: scanf(“%c“, /* 输入一个字

24、符,赋给变量ch*/ ch=(ch=A& ch=A&ch e1n 注意: 对无符号数,右移时,左边高位移入0。 对于有符号的值,如果原来符号位为0(该数为正),则左边也是 移入0;如果符号位原来为1(该数为负),则左边移入0还是1,要 取决于所用的计算机系统。有的系统移入0,有的系统移入1。Turbo C及多数C编译系统是移入1,即保持数的正负性不变。 一般来说,一个整数右移1位,其结果相当于这个整数除以2。 例如: 142,相当于14连续两次除以2并取整,即其值为3。 -38- 第2章 数据类型与表达式 2.10 位运算符与长度运算符 l 位逻辑运算符 1按位取反运算符 以int型数据为例,

25、若a的值为2,则 a补=0000000000000010 按位取反得 1111111111111101 上式对应的原码为 1000000000000011 从而知(a)的值为-3。 2按位与运算符& 按位与运算符&的作用是对两个操作数按位求逻辑与。 -39- 第2章 数据类型与表达式 2.10 位运算符与长度运算符 3按位或运算符| 按位或运算符|的作用是对两个操作数按位求逻辑或。 4按位异或运算符 按位异或运算符使参加运算的两个数按位求异或,即当两个二进位 相异则结果为1,相同则结果为0。 -40- 第2章 数据类型与表达式 2.10 位运算符与长度运算符 l 求长度运算符sizeof si

26、zeof(类型符或变量名) 运算结果为操作数对应的类型在内存中所占用的字节数。 例如:在微机上,int型的长度为2,float型的长度为4,所以 sizeof(int)的值为2,sizeof(float)的值为4。 假设n为int型变量,x为float型变量,则 sizeof(n)=2,sizeof(x)=4。 注意:运算对象必须用圆括号括住。 -41- 第2章 数据类型与表达式 2.11 赋值运算符和赋值表达式 l 赋值运算符和赋值表达式 例如:a=2+5 l 类型转换问题 如果赋值运算符两侧的类型不一致,但都是数值型或字符型时 ,在赋值时会自动进行类型转换。 l 算术自反赋值运算符 在赋值

27、符“=”之前加上二元算术运算符+、-、*、/、%,可以构成算 术自反赋值运算符。例如,a+=3相当于a=a+3。 【例2-12】整型变量n1的值为10,则: n1+=2运算后,n1的值为12,表达式的值也为12。 n1-=2运算后,n1的值为8,表达式的值也为8。 n1*=2运算后,n1的值为20,表达式的值也为20。 n1/=2运算后,n1的值为5,表达式的值也为5。 n1%=2运算后,n1的值为0,表达式的值也为0。 -42- 第2章 数据类型与表达式 2.11 赋值运算符和赋值表达式 l 位自反赋值运算符 =、&=、|=、= 例:a . 自左至右 2! + - - (类型)* & siz

28、eof单目自右至左 3* / %双目自左至右 4+ -双目自左至右 5双目自左至右 6 =双目自左至右 7= !=双目自左至右 8&双目自左至右 9双目自左至右 10|双目自左至右 11&双目自左至右 12|双目自左至右 13? :双目自右至左 14= += -= *= /= %= = y)+(4|5)是算术表达式 xy+4|5 是逻辑表达式。 2按值分类 表达式的值值:每个表达式都可以按照其中运算符的优优先级别级别 和运算规规 则则依次对对运算对对象进进行运算,最终获终获 得一个数据,该该数据称为为表达 式的值值。 表达式值值的数据类类型就称为为表达式的数据类类型。由于表达式的计计 算结结果可能是整型、实实型和逻辑逻辑 型,而在C语语言中逻辑逻辑 型数据是用 整数来表示的,所以C语语言的表达式类类型实际实际 上只分为为整型和实实型 。 -46- 第2章 数据类型与表达式 作 业 l习题二: 一、二、三

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1