程序设计3(数据).ppt
《程序设计3(数据).ppt》由会员分享,可在线阅读,更多相关《程序设计3(数据).ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 数据类型、运算符和表达式预备知识数据类型常量与变量不同类型数据间的转换运算符和表达式3.1 预备知识计算机中数的表示及进制转换v数码、基与权l数码:表示数的符号l基:数码的个数l权:每一位所具有的值v数制语言程序设计 第二章数据描述Cv各种进制之间的转换l二进制、八进制、十六进制转换成十进制u方法:按权相加语言程序设计 第二章数据描述Cv各种进制之间的转换(整数)l二进制、八进制、十六进制转换成十进制u方法:按权相加l十进制转换成二进制、八进制、十六进制u原理:u方法:连续除以基,从低到高记录余数,直至商为0例 把十进制数59转换成二进制数5922921427232120(59)10=
2、(111011)21101111 1 1 0 1 1余余余余余余例 把十进制数159转换成八进制数1598198280(159)10=(237)82 3 7 余 7余 3余 2例 把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161 C B 余11余12余 1语言程序设计 第二章数据描述C例例2.2.将将0.875D0.875D转换转换 成二进制、八进制、十六进制成二进制、八进制、十六进制 0.875X 2 1.7510.75X 2 1.5010.50X 2 1.01 00.875D=0.111B0.875X 8 7.07 00.875D=(0.7)80.
3、875X 16 14.0E 00.875D=(0.E)16实数是整数、小数分别转化后合在一起:(44.875)10=(101011.111)2=(54.7)8=(2B.E)16二进制、八进制、十六进制的相互转换二进制、八进制、十六进制的相互转换二进制到八进制:二进制到八进制:整数从右向左,三位一段,分别转化整数从右向左,三位一段,分别转化小数从左向右,三位一段,分别转化小数从左向右,三位一段,分别转化例例(1010101.11011)2(001,010,101.110,110)21 2 5 .6 6二进制到十六进制:二进制到十六进制:整数从右向左,四位一段,分别转化整数从右向左,四位一段,分别
4、转化小数从左向右,四位一段,分别转化小数从左向右,四位一段,分别转化例例101,0101.1101,15 5 .D 80000000 0001 1010 2011 3100 4101 5110 6111 70000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F八进制到二进制、十六进制到二进制八进制到二进制、十六进制到二进制将八进制的每一个位变成三位二进制数;十六将八进制的每一个位变成三位二进制数;十六进制的每一个数位变成四位二进制数。进制的每一个数位变成四位
5、二进制数。例:例:(5 4 3 .2 1 )8=(101 100 011 .010 001)2例:例:(5 A 3 .2 1 )16=(0101 1010 0011 .0010 0001)2八进制和十六进制之间转换必须以二进制作为中八进制和十六进制之间转换必须以二进制作为中间桥梁间桥梁(5A4.21)16=(10,110,100,011.001,000,01)2 =(2644.102)8字节和位v内存以字节为单元组成v每个字节有一个地址v一个字节一般由8个二进制位组成v每个二进位的值是0或101234567012345678910.语言程序设计 第二章数据描述C数值的表示方法原码、反码和补码v
6、原码:最高位为符号位,其余各位为数值本身的绝对值v反码:l正数:反码与原码相同l负数:符号位为1,其余位对原码取反v补码:l正数:原码、反码、补码相同l负数:最高位为1,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)12语言程序设计 第二章数据描述C原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围0111111111111111(-127+127)01111111100
7、00000(-127+127)0111111110000000(-128+127)(用一字节表示数)v负数补码转换成十进制数:最高位不动,其余位取反加1例 补码:11111001 取反:10000110 加1:10000111=-7语言程序设计 第二章数据描述C3.2 数据类型数据类型总表C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整 型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int数据类型决定:1.数据占内存字节数2.数据取值范围4.其上可进行的操作语言程序设计
8、 第二章数据描述C基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float324.4e-384.4e38有double641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM
9、 PC机为例:语言程序设计 第二章数据描述C3.3 常量与变量标识符v定义:用来标识变量、常量、函数等的字符序列v组成:l只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线l大小写敏感l不能使用关键字v长度:最长32个字符v命名原则:l见名知意l不宜混淆 如l与I,o与0例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$1233days#33char$123ab语言程序设计 第二章数据描述Cu一般用大写字母u是宏定义预处理命令,不是C语句l直接常量:u整型常量
10、 u实型常量 u字符常量 u字符串常量如#define PRICE 30常量v定义:程序运行时其值不能改变的量(即常数)v分类:l符号常量:用标识符代表常量u定义格式:#define 符号常量 常量例 符号常量举例(ch2_1.c)#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);运行结果:total=300语言程序设计 第二章数据描述C&整型常量(整常数)v三种形式:l十进制整数:由数字09和正负号表示.如 123,-456,0l八进制整数:由数字0开头,后跟数字07表示.如01
11、23,011l十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff例 12 与 12L例 30000 为int型 65536 为long int 型v整型常量的类型l根据其值所在范围确定其数据类型l在整常量后加字母l或L,认为它是long int 型常量问题:0123 =()100 x123=()100Xff =()1083291255问题:0123 =()100 x123=()100Xff =()10语言程序设计 第二章数据描述C&实型常量(实数或浮点数)v表示形式:l十进制数形式:(必须有小数点)如0.123,.123,124.0,0.0,124.l指数形式:(e
12、或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5 ,v实型常量的类型l默认double(双精度)型l在实型常量后加字母f或F,认为它是float(单精度)型l长双精度long double语言程序设计 第二章数据描述C浮点表示:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动,称为浮点表示法。任意一个十进制数 可以写成 N=Sx10e 同样在计算机中一个任意进制数 可以写成 N=SxRe 例:例:N=11.0101 =0.110101x210 =1
13、.10101x21 =1101.01x2-10 =0.00110101x2100 为了提高数据精度以及便于浮点数间的比较计算,在计算机中规定浮点数的尾数用纯小数表示,此外,将尾数最高位为1的浮点数称为规格化数,即N=0.110101x210为规格化形式,此时精度最高。一个机器浮点数由阶码和尾数及其符号位组成(尾数尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度;阶码阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。):例:例:将十进制数0.1015625写成二进制定点数和浮点数(数值部分取10位,阶码部分取4位,阶符和数符各取1位),分别写出它在定点机和浮点
14、机中的机器数形式。二进制:x=0.0001101000 定点数:x=0.0001101000浮点数规格化:x=0.1101000000 x2-11&字符常量v定义:用单引号括起来的单个普通字符或转义字符.v字符常量的值:该字符的ASCII码值转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例:A-101-x41-65如 A65,a97,048,n10如 a A?n 101v转义字符:反斜线后面
15、跟一个字符或一个代码值表示例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例 main()printf(“Yb=n”);运行结果:屏幕显示:=打印机输出:v字符常量与字符串常量不同&字符串常量v定义:用双引号(“”)括起来的字符序列v存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例
16、字符串“hello”在内存中a a 0例 a“a”例 空串 “”0例:char ch;ch=“A”;例:char ch;ch=A;语言程序设计 第二章数据描述C编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1,b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数变量v概念:其值可以改变的量v变量名与变量值v变量定义的一般格式:数据类型 变量1,变量2,变量n;v变量初始化:定义时赋初值 例:int a,b,c;float data;决定分配字节数和数的表示范围合法标识符例:int a=2,b,c=4;float data=4.67;char ch=A;int x=
17、1,y=1,z=1;int x=y=z=1;v变量的使用:先定义,后使用例1 int student;stadent=19;/Undefined symbol statent in function main 例2 float a,b,c;c=a%b;/Illegal use of floating point in function main v变量定义位置:一般放在函数开头main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义可执行语句main()int a,b=2;a=1;float data;
18、data=(a+b)*1.2;printf(“data=%fn”,data);Ch2_005.c语言程序设计 第二章数据描述C&整型变量v占字节数随机器不同而不同,一般占一个机器字vshortintlongv可用sizeof(类型标识符)测量&实型变量vfloat:占4字节,提供6位有效数字vdouble:占8字节,提供15位有效数字&字符型变量v字符变量存放字符ASCII码vchar与int数据间可进行算术运算例 float a;a=11111.111;/*a=11111.1*/double b;b=111111.111;/*b=111111.111*/例 a=D;/*a=68;*/x=A+
19、5;/*x=65+5;*/s=!+G /*s=33+71;*/没有字符串变量,用字符数组存放Ch2_006.c语言程序设计 第二章数据描述C例 /*ch2_004.c*/#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量定义输出结果运行结果:total=37.500000,ch1=d语言程序设计 第二章数据描述C3.4不同类型数据间的转换隐式转换v什么情况下发生l运算转换-不同类型数
20、据混合运算时l赋值转换-把一个值赋给与其类型不同的变量时l输出转换-输出时转换成指定的输出格式l函数调用转换-实参与形参类型不一致时转换v运算转换规则:不同类型数据运算时先自动转换成同一类型语言程序设计 第二章数据描述Cdoublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例 char ch;int i;float f;double d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble
21、10+a +i*f -d/l例 int i;float f;double d;long l;显式转换(强制转换)v一般形式:(类型名)(表达式)例 (int)(x+y)(int)x+y (double)(3/2)(int)4.6 v说明:强制转换得到所需类型的中间变量,原变量类型不变 例 main()float x;int i;x=4.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=4.600000,i=3精度损失问题较高类型向较低类型转换时可能发生Ch2_007.cCh2_008.c语言程序设计 第二章数据描述C3.5 运算符和表达式C运算符算术运算符:(+-
22、*/%+-)关系运算符:(=!=)逻辑运算符:(!&|)位运算符 :(|&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(.-)下标运算符:()其它 :(()-)语言程序设计 第二章数据描述C学习运算符应注意:v运算符功能v与运算量关系l要求运算量个数l要求运算量类型v运算符优先级别v结合方向v结果的类型语言程序设计 第二章数据描述C算术运算符和表达式v基本算术运算符:+-*/%l结合方向:从左向右l优先级:-*/%-+-(2)(3)(4)说明:l“-”可为单目运算符时,右结合性l两整数相除,
23、结果为整数l%要求两侧均为整型数据例 5/2 =-5/2.0 =例 5%2 =-5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2.0=-2.5例 5%2 =1 -5%2 =-1 1%10 =1 5%1 =0 5.5%2 ()语言程序设计 第二章数据描述Cv自增、自减运算符+-l作用:使变量值加1或减1l种类:u前置 +i,-i (先执行i+1或i-1,再使用i值)u后置 i+,i-(先使用i值,再执行i+1或i-1)例 j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3
24、;b=5;c=(a+)*b;/k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4语言程序设计 第二章数据描述Cv自增、自减运算符+-l作用:使变量值加1或减1l种类:u前置 +i,-i (先执行i+1或i-1,再使用i值)u后置 i+,i-(先使用i值,再执行i+1或i-1)l说明:u+-不能用于常量和表达式,如5+,(a+b)+u+-结合方向:自右向左u优先级:-+-*/%-+-(2)(3)(4)例-i+-(i+)i=3;printf(“%d”,-i+);/-3 例 j+k;(j+)+k;例-i+i=3;printf(“%d”,-i+);Ch2_009.c语言程序设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 数据
限制150内