收藏 分销(赏)

《数据结构C语言版》严蔚敏-c2数据描述.pptx

上传人:快乐****生活 文档编号:12593382 上传时间:2025-11-08 格式:PPTX 页数:43 大小:322.29KB 下载积分:12 金币
下载 相关 举报
《数据结构C语言版》严蔚敏-c2数据描述.pptx_第1页
第1页 / 共43页
《数据结构C语言版》严蔚敏-c2数据描述.pptx_第2页
第2页 / 共43页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第二章 数据描述,预备知识,数据类型,常量与变量,不一样类型数据间转换,运算符和表示式,1/43,2.0,预备知识,计算机中数表示及进制转换,数码、基与权,数码:表示数符号,基:数码个数,权:每一位所含有值,数制,语言程序设计,第二章数据描述,C,2/43,各种进制之间转换,二进制、八进制、十六进制转换成十进制,方法:按权相加,语言程序设计,第二章数据描述,C,3/43,各种进制之间转换(整数),二进制、八进制、十六进制转换成十进制,方法:按权相加,十进制转换成二进制、八进制、十六进制,原理:,方法:连续除以基,从低到高统计余数,直至商为0,例 把十进制数59转换成二进制数,59,2,29,2,14,2,7,2,3,2,1,2,0,(59),10,=(111011),2,1,1,0,1,1,1,1 1 1 0 1 1,余,余,余,余,余,余,例 把十进制数159转换成八进制数,159,8,19,8,2,8,0,(159),10,=(237),8,2 3 7,余 7,余 3,余 2,例 把十进制数459转换成十六进制数,459,16,28,16,1,16,0,(459),10,=(1CB),16,1 C B,余11,余12,余 1,语言程序设计,第二章数据描述,C,4/43,二进制与八进制之间转换,二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制,八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001),2,=(,00,1,101,001),2,=(151),8,例(246),8,=(,0,10,100,110),2,=(10100110),2,000 0,001 1,010 2,011 3,100 4,101 5,110 6,111 7,语言程序设计,第二章数据描述,C,5/43,二进制与十六进制之间转换,二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制,十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例 (11010101111101),2,=(,00,11,0101,0111,1101),2,=(357D),16,例(4B9E),16,=(,0,100,1011,1001,1110),2,=(100101110011110),2,0000 0,0001 1,0010 2,0011 3,0100 4,0101 5,0110 6,0111 7,1000 8,1001 9,1010 A,1011 B,1100 C,1101 D,1110 E,1111 F,语言程序设计,第二章数据描述,C,6/43,字节和位,内存以字节为单元组成,每个字节有一个地址,一个字节普通由8个二进制位组成,每个二进位值是0或1,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,.,语言程序设计,第二章数据描述,C,7,6,4,3,2,5,1,7/43,数值表示方法原码、反码和补码,原码:最高位为符号位,其余各位为数值本身绝对值,反码:,正数:反码与原码相同,负数:符号位为1,其余位对原码取反,补码:,正数:原码、反码、补码相同,负数:最高位为1,其余位为原码取反,再对整个数加1,3,12,6,9,1,2,4,5,7,8,10,11,9-5=4,9+7=16=(14),12,语言程序设计,第二章数据描述,C,8/43,原码,反码,补码,+7,00000111,00000111,00000111,-7,1,0000111,1,1111000,1,1111001,+0,00000000,00000000,00000000,-0,10000000,11111111,00000000,数范围,01111111,11111111,(-127+127),01111111,10000000,(-127+127),01111111,10000000,(-128+127),(用一字节表示数),负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001,取反:10000110,加1:10000111=-7,语言程序设计,第二章数据描述,C,9/43,2.1,数据类型,数据类型总表,C,数,据,类,型,基本类型,结构类型,指针类型,空类型void,定义类型typedef,字符类型char,枚举类型enum,整 型,实型,单精度型float,双精度型double,数组,结构体struct,共用体union,短整型short,长整型long,整型int,数据类型决定:,1.数据占内存字节数,2.数据取值范围,3.其上可进行操作,语言程序设计,第二章数据描述,C,10/43,基本数据类型,类型,符号,关键字,数表示范围,所占位数,整型,字符型,实型,有,无,(signed),int,16,-3276832767,(signed),short,16,-3276832767,(signed),long,32,-21474836482147483647,16,unsigned,int,065535,32,04294967295,unsigned,long,unsigned,short,16,065535,有,float,32,3.4e-383.4e38,有,double,64,1.7e-3081.7e308,有,char,8,-128127,无,unsigned char,8,0255,说明,:数据类型所占字节数随机器硬件不一样而不一样,上表以IBM PC机为例:,语言程序设计,第二章数据描述,C,11/43,2.2,常量与变量,标识符,定义:用来标识变量、常量、函数等字符序列,组成:,只能由,字母,、,数字,、,下划线,组成,且第一个字母必须是字母或下划线,大小写敏感,不能使用关键字,长度:最长32个字符,命名标准:,见名知意,不宜混同 如l,与I,o与0,例:判断以下标识符号正当性,sum Sum M.D.John day Date 3days,student_name#33 lotus_1_2_3,char ab _above$123,M.D.John,3days,#33,char,$123,ab,语言程序设计,第二章数据描述,C,12/43,普通用大写字母,是宏定义预处理命令,不是C,语句,直接常量:,整型常量,实型常量,字符常量,字符串常量,如#define PRICE 30,常量,定义:程序运行时其值不能改变量(即常数),分类:,符号常量:用标识符代表常量,定义格式:,#define,符号常量 常量,例 符号常量举例(ch2_1.c),#define PRICE 30,main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%d,total);,运行结果:total=300,语言程序设计,第二章数据描述,C,13/43,整型常量(整常数),三种形式:,十进制整数:由数字0,9和正负号表示.如 123,-456,0,八进制整数:由数字0开头,后跟数字0,7表示.如0123,011,十六进制整数:由0 x开头,后跟0,9,a,f,A,F表示.如0 x123,0Xff,例 12 与,12L,例 30000 为int,型,65536 为long int 型,整型常量类型,依据其值所在范围确定其数据类型,在整常量后加字母l或L,认为它是,long int,型常量,问题:,0123 =(),10,0 x123=(),10,0Xff =(),10,83,291,255,问题:,0123 =(),10,0 x123=(),10,0Xff =(),10,语言程序设计,第二章数据描述,C,14/43,实型常量(实数或浮点数),表示形式:,十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.,指数形式:(e,或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,实型常量类型,默认double,型,在实型常量后加字母f或F,认为它是float 型,语言程序设计,第二章数据描述,C,15/43,字符常量,定义:用,单引号,括起来单个,普通字符,或,转义字符,.,字符常量,值,:该字符,ASCII,码值,转义字符及其含义:,转义字符,含义,n,v,r,a,ddd,t,b,f,“,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 101,转义字符,:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例(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 C,Isay:”How are you?”,C Program,Turbo C,例 main(),printf(“Yb=n”);,运行结果:,屏幕显示:=,打印机输出:,16/43,字符常量与字符串常量不一样,字符串常量,定义:用双引号(“”)括起来字符序列,存放:,每个字符串尾,自动,加一个 0 作为字符串结束标志,h e l l o,0,例 字符串“hello”,在内存中,a,a 0,例,a,“a”,例,空串 “”,0,例:char ch;,ch=“A”;,例:char ch;,ch=A;,语言程序设计,第二章数据描述,C,17/43,编译程序依据变量定义为其,分配指定字节内存单元,.,地址,int a=1,b=-3,c;,a,b,c,2字节,2字节,2字节,地址,地址,.,内存,1,-3,随机数,变量,概念:其值能够改变量,变量名,与,变量值,变量定义普通格式:,数据类型,变量1,变量2,变量n;,变量初始化:定义时赋初值,例:,int a,b,c;,float data;,决定分配字节数,和数表示范围,正当标识符,例:,int a=2,b,c=4;,float data=3.67;,char ch=A;,int x=1,y=1,z=1;,int x=y=z=1;,变量使用:,先定义,后使用,例1,int student;,stadent=19;/,Undefined symbol stadent in function main,例2,float a,b,c;,c=a%b;/,Illegal use of floating point in function main,变量定义位置:,普通,放在函数开头,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;,data=(a+b)*1.2;,printf(“data=%fn”,data);,Ch2_005.c,语言程序设计,第二章数据描述,C,18/43,整型变量,占字节数随机器不一样而不一样,普通占一个机器字,shortintlong,可用,sizeof,(,类型标识符)测量,实型变量,float:,占4字节,提供7位有效数字,double:占8字节,提供15,16位有效数字,字符型变量,字符变量存放字符ASCII,码,char与int数据间可进行算术运算,例 float a;,a=111111.111;/*a=111111.1*/,double b;,b=111111.111;/*b=111111.111*/,例 a=D;/*a=68;*/,x=A+5;/*x=65+5;*/,s=!+G /*s=33+71;*/,没有,字符串变量,,用字符数组存放,Ch2_006.c,语言程序设计,第二章数据描述,C,19/43,例 /*ch2_003.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,语言程序设计,第二章数据描述,C,20/43,2.3,不一样类型数据间转换,隐式转换,什么情况下发生,运算转换,-不一样类型数据混合运算时,赋值转换,-把一个值赋给与其类型不一样变量时,输出转换,-输出时转换成指定输出格式,函数调用转换,-实参加形参类型不一致时转换,运算转换规则:,不一样类型数据运算时先,自动,转换成同一类型,语言程序设计,第二章数据描述,C,21/43,double,float,long,unsigned,int,char,short,低,高,说明:,必定转换,运算对象类型不一样时转换,例 char ch;,int i;,float f;,double d;,ch/i +f*d -(f+i),int,int,double,double,double,double,double,double,int,int,double,double,double,double,double,double,10+a +i*f -d/l,例 int i;,float f;,double d;,long l;,22/43,显式转换(强制转换),普通形式:,(,类型名,),(,表示式),例 (int)(x+y),(int)x+y,(double)(3/2),(int)3.6,说明:强制转换得到所需类型中间变量,原变量类型不变,例 main(),float x;,int i;,x=3.6;,i=(int)x;,printf(“x=%f,i=%d”,x,i);,结果:x=3.600000,i=3,精度损失问题,较高类型向较低类型转换时可能发生,Ch2_007.c,Ch2_008.c,语言程序设计,第二章数据描述,C,23/43,2.4,运算符和表示式,C,运,算,符,算术运算符:(+-*/%+-),关系运算符:(=!=),逻辑运算符:(!&|),位运算符 :(|&),赋值运算符:(=及其扩展),条件运算符:(?:),逗号运算符:(,),指针运算符:(*&),求字节数 :(sizeof),强制类型转换:(类型),分量运算符:(.-),下标运算符:(),其它 :(()-),语言程序设计,第二章数据描述,C,24/43,学习运算符应注意:,运算符功效,与运算量关系,要求运算量个数,要求运算量类型,运算符优先级别,结合方向,结果类型,语言程序设计,第二章数据描述,C,25/43,算术运算符和表示式,基本算术运算符:,+,-,*/%,结合方向:从左向右,优先级:,-,-,*/%,-,+-,(2)(3)(4),说明:,“-”可为,单目,运算符时,右结合性,两整数相除,结果为整数,%要求两侧均为整型数据,例 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,(,),语言程序设计,第二章数据描述,C,26/43,自增、自减运算符,+-,作用:使变量值加1或减1,种类:,前置 +i,-i (,先执行i,+1,或i-1,,,再使用i值),后置 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;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,语言程序设计,第二章数据描述,C,27/43,自增、自减运算符,+-,作用:使变量值加1或减1,种类:,前置 +i,-i (,先执行i,+1,或i-1,,,再使用i值),后置 i+,i-(先使用i值,再执行i,+1,或i-1,),说明:,+-不能用于常量和表示式,如,5+,(a+b)+,+-,结合方向:,自右向左,优先级:-+-*/%-+-,(2)(3)(4),例-i+,-(i+),i=3;printf(“%d”,-i+);,/-3,例 j+k;(j+)+k;,例-i+,i=3;printf(“%d”,-i+);,Ch2_009.c,语言程序设计,第二章数据描述,C,28/43,赋值运算符和表示式,简单赋值运算符,符号:=,格式:,变量标识符=表示式,作用:将一个数据(常量或表示式)赋给一个变量,复合赋值运算符,种类,:+=-=*=/=%=,=&=|=,含义:,exp1 op=exp2,exp1=exp1 op exp2,a+=3,a=a+3,x*=y+8,x=x*(y+8),x%=3,x=x%3,例 a=3;,d=func();,c=d+2;,语言程序设计,第二章数据描述,C,29/43,说明:,结合方向:,自右向左,优先级:,14,左侧必须是变量,不能是常量或表示式,赋值表示式值与变量值相等,且可嵌套,赋值转换,规则:使赋值号右边表示式值,自动,转换成其左边变量类型,例,3=x-2*y;,a+b=3;,例,float f;,int i;,i=10;,f=i;,则,f=10.0,例 int i;,i=2.56;/,结果i=2,;,例:a=b=c=5,a=(b=5),a=5+(c=6),a=(b=4)+(c=6),a=(b=10)/(c=2),/,表示式值为5,a,b,c值为5,/b=5;a=5,/,表示式值11,c=6,a=11,/,表示式值10,a=10,b=4,c=6,/,表示式值5,a=5,b=10,c=2,语言程序设计,第二章数据描述,C,30/43,说明:,结合方向:,自右向左,优先级:,12,左侧必须是变量,不能是常量或表示式,赋值表示式值与变量值相等,且可嵌套,赋值转换,规则:使赋值号右边表示式值,自动,转换成其左边变量类型,例:a=12;,a+=a-=a*a,例:int a=2;,a%=4-1;,a+=a*=a-=a*=3;,/a=-264,等价于a=a+(a=a-(a*a),/a=0 等价于a=a+(a=a*(a=a-(a=a*3),语言程序设计,第二章数据描述,C,31/43,逗号运算符和表示式,形式:,表示式1,表示式2,表示式n,结合性:从左向右,优先级:,15,逗号表示式,值:等于表示式n值,用途:惯用于循环for语句中,例 a=3*5,a*4,a=3*5,a*4,a+5,例 x=(a=3,6*3),x=a=3,6*a,例 a=1;b=2;c=3;,printf(“%d,%d,%d”,a,b,c);,printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表示式值60,/a=15,表示式值20,/,赋值表示式,表示式值18,x=18,/,逗号表示式,表示式值18,x=3,/1,2,3,/3,2,3,语言程序设计,第二章数据描述,C,32/43,逗号运算符和表示式,形式:,表示式1,表示式2,表示式n,结合性:从左向右,优先级:,15,逗号表示式,值:等于表示式n值,用途:惯用于循环for语句中,例:,/*ch2_6.c*/,#include,main(),int x,y=7;,float z=4;,x=(y=y+6,y/z);,printf(x=%dn,x);,运行结果:x=3,语言程序设计,第二章数据描述,C,33/43,关系运算符和表示式,关系运算符,种类,:=!=,结合方向:自左向右,优先级别:,=,=,!=,优先级6(高),优先级7(低),例 ca+b /c(a+b),ab!=c /(ab)!=c,a=bc /a=(bc /a=(bc),关系表示式值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f;,ab,(ab)=c,b+cb,f=abc,/,表示式值1,/,表示式值1,/,表示式值0,/d=1,/f=0,语言程序设计,第二章数据描述,C,34/43,关系运算注意:,例 若a=0;b=0.5;x=0.3;,则,a,=x278,在C中是允许,,值为,0,例 int i=1,j=7,a;,a=i+(j%4!=0);,则a=,2,例 a0,结果为,A100 结果为,1,0,语言程序设计,第二章数据描述,C,35/43,关系运算注意:,例 注意区分“,=,”与“,=,”,int a=0,b=1;,if(a,=,b),printf(“a equal to b”);,else,printf(“a not equal to b”);,例 应防止对,实数,作相等或不等判断,如 1.0/3.0*3.0=1.0 结果为,可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,0,语言程序设计,第二章数据描述,C,36/43,a,b,!a,!b,a&b,a|b,真,假,真,假,假,假,真,真,逻辑运算符和表示式,逻辑运算符,种类:!&|,逻辑运算真值表,C,语言中,运算量:,0表示“假”,,非0表示“真”,运算结果:,0表示“假”,,1表示“真”,真,假,假,假,假,假,真,真,假,假,真,真,真,假,真,真,语言程序设计,第二章数据描述,C,37/43,!,(2),&,(11),|,(12),高,低,例,a=x&xb&xy,a=b|x=y,!a|ab,优先级:,结合方向:,!,:从右向左,&:,从左向右,|:,从左向右,/(a=x)&(xb)&(xy),/(a=b)|(x=y),/(!a)|(ab),语言程序设计,第二章数据描述,C,38/43,!,(2),&,(11),|,(12),高,低,优先级:,结合方向:,!,:从右向左,&:,从左向右,|:,从左向右,例 a=4;b=5;,!a,a&b,a|b,!a|b,4&0|2,53&2|84-!0,c&d,值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(8(4-(!0)值为1,语言程序设计,第二章数据描述,C,39/43,!,(2),&,(11),|,(12),高,低,优先级:,结合方向:,!,:从右向左,&:,从左向右,|:,从左向右,短路特征,:逻辑表示式求解时,并非全部逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表示式解时,才执行该运算符,例 a&b&c,/,只在a为真时,才判别b值;,只在a、b都为真时,才判别 c值,例 a|b|c,/,只在a为假时,才判别b值;,只在a、b都为假时,才判别 c值,例 a=1;b=2;c=3;d=4;m=1;n=1;,(m=ab)&(n=cd),/,结果m=0,n=1,语言程序设计,第二章数据描述,C,40/43,条件运算符与表示式,普通形式:,expr1,?,expr2,:,expr3,执行过程,功效:相当于条件语句,但不能取代普通if,语句,例 if(ab),printf(“%d”,a);,else,printf(“%d”,b);,printf(“%d”,ab?a:b);,例 求 a+|b|,printf(“a+|b|=%dn”,b0?a+b:a-b);,expr1,取expr2,值,取expr3,值,非0,=0,例 (a=b)?Y:N,(x%2=1)?1:0,(x=0)?x:-x,(c=a&c0?1:(xb?a:cd?c:d,ab?a:(cd?c:d),expr1、expr2、expr3类型可不一样,表示式值取较高类型,例 x?a:b /x=0,表示式值为b;x0,表示式值为a,xy?1:1.5 /xy ,值为1.0;xy ,值为1.5,语言程序设计,第二章数据描述,C,41/43,0,1 11 11 11 11 11 11 11,int,型:,最大:,32767,1,0 00 00 00 00 00 00 00,最小:-,32768,11 11 11 11 11 11 11 11,unsigned int,型:,最大:,65535,00 00 00 00 00 00 00 00,最小:0,语言程序设计,第二章数据描述,C,42/43,数制,基,权,表示,数码,特点,10,,10,10,,十进制数,09,10,逢十进一,二进制数,01,2,2,,2,2,,逢二进一,八进制数,07,8,8,,8,8,,逢八进一,十六进制数,09,AF,af,16,16,,16,16,,逢十六进一,十进制:4956=,410+910+510+6,10,二进制:1011=12+02+12+12,十六进制:81AE=816+116+1016+1416,八进制:4275=48+28+78+58,语言程序设计,第二章数据描述,C,43/43,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服