《数据类型简单类型》PPT课件.ppt

上传人:tia****nde 文档编号:14167136 上传时间:2020-07-08 格式:PPT 页数:38 大小:188KB
返回 下载 相关 举报
《数据类型简单类型》PPT课件.ppt_第1页
第1页 / 共38页
《数据类型简单类型》PPT课件.ppt_第2页
第2页 / 共38页
《数据类型简单类型》PPT课件.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
,2,第3章,数据类型 _简单数据类型,本章目录,3.1C+的字符集 3.2 标识符和关键字 3.3 数据类型 简单数据类型(一) 数组(二) 指针(三) 引用(四),数据是程序处理的基本对象 在程序中每种数据都应有确定的类型 每种数据类型的变量都有确定的存储长度、取值范围及允许的操作。 3.C+的字符集(CHARACTERSET) 每种语言都使用一组字符构造程序的基本单元, C+的字符集由下列字符组成: 大小写英文字母和 数字字符 其他字符 * , . _ : ; ? “ | ! # % integer a; /等价于 int a;,3.3.1整型,整数在计算机中的存储形式:二进制补码 整数的表示范围:见P67表3-2 整数的类型: signed, unsigned (char, short int, int , long int) 存储长度满足char=short int=int=long int,注: 长整数表示为 123l 123L 无符号整数表示为 123u 例如:b=02345L; c=235u+123u;,整型常数即整型常量(整数字面值),有三种表示方法: 十进制整数123,-784 八进制整数 0123= 十六进制整数 注:八进制和十六进制只能表示正整数 例如: int a=23; long int b=02345; unsigned int c=0 x79fa;,3.3.2 整数子类型,1、字符型 2、枚举型 3、布尔型(C+才有的类型),1、字符型(char) 字符的表示 单引号括起的字符,称为字符常量。 如:a, 9, + 字符的存储:1个字节(256种状态:对于signed char,此类型的0127用于ASCII编码,-1-128表示非正常状态;对于unsigned char 而言,此类型表示的整数范围为0255)。 由于char是int的子集,所以char数据可以参与到整数的运算中去,但是在输出上还是按本身类型输出。 int a=b; char c=97; int x=a+a; /x=98+7=105 coutaendl; / 输出:98 coutcendl; /输出:a,转义字符表示控制字符或具有特定用途的字符 a 0 x07 响铃 0 x27单引号 n 0 x0A换行 ddd 13位八进制数 t 0 x09 制表符 xhh 12位十六进制数 0 x5c 反斜杠字符 ” 0 x22 双引号 字符变量的初始化 char a=007, b=r, c=xab;,2、枚举型(enum Type) /应用举例:获取当前系统时间 枚举型是对整数区间的自定义类型,用户须为区间中的值取名。 enum color RED,BLUE,GREEN,WHITE,BLACK; Color是自定义的枚举类型。枚举成员RED,BLUE,GREEN等都是符号常量,枚举成员值按序初始化为0N。上例中REDBLACK的值分别为0。 在定义枚举类型时也可为其成员指定枚举值 : enum colorRED,BLUE=100,GREEN,WHITE,BLACK; 此时,RED 为0,BLUEBLACK分别为100 103。 一旦定义了枚举类型,该类型的变量的取值范围也确定了,即其变量只能取花括号中的枚举值。 color point=GREEN; 正确 color point=YELLOW; 错误 虽然枚举值对应整数,但是枚举变量却不能取得整数值。 例如:color c=0; /error:0是非枚举类型(虽然RED代表整数0) 枚举类型的作用:一般作为整数常量使用。,3、布尔型(bool)C+中的类型 bool型变量只有true和false两个逻辑值,在编译系统中,其定义相当于 enum bool false, true ; 由于bool型是整数的子类型,所以可以用任何整数给bool型变量赋值,但是任何非0整数给bool型变量赋值时,其值都为1,非整数的其他类型也一样,总之,只要非0,其值都为1。 bool a=3; /a为ture bool b=1; /b为ture bool c=a+b; /c为ture bool d=true; /d为ture bool e=a-b; /e为false 完整的例子 注意:bool是C+ 中的类型,C语言中没有此类型,但是C中有BOOL,使用BOOL需要包含头文件 在C中使用BOOL的完整的例子,3.3.3 浮点型,实数,也称浮点数,有float,double和long double三种类型 实型常量在书写时,默认为double类型,若要表示float类型,要在其后加上F或f。 float f1=19.2f; float f2=0.192e+02; /将double类型的值转换成float double d1=19.2; double d2=0.192e+02f; /将float类型的值转换成double long double ld1=19.2L; long double ld2=0.192e+02; /将double类型的值转换成long double 两种表示方法: ()定点数形式1.123, 3.1415; ()科学计数法形式 123e5, 123E5都表示 有效位 float (4字节) 7位 double (8字节) 15位 long double (10字节)19位,3.3.4 C-串与string,在C+中表示字符串的类型有以下三种,1、字符指针与字符串 (1)字符串常量 由一对双引号括起的字符序列称为字符串常量。 “How do you do?” “china” 字符串常量以0结束。 字符串常量通常存放在data area 的const 区中,并以0作为结束符,编译器记下其起始地址.即:地址代表了这个字符串常量。,由于字符串常量的地址属性,所以由相同字符组成的字符串常量是两个不同起始地址的字符串常量。 例如:/f0303.cpp #include using namespace std; int main( ) cout(“join”= =“join”? “ ” : ”not”)“equaln”; char* str1 =“good”; char* str2=“good”; cout(str1= =str2? “ ” : “ not”)“equaln”; char buffer16=“Hello”; char buffer26=“Hello”; cout(buffer1=buffer2 ? “ ” : “not”)“equaln”; ,not equal,not equal,not equal,(2)字符数组 数组中每个元素为字符的数组称为字符数组,字符数组可用单个字符常量初始化,也可用字符串常量初始化,例如: char buffer =“hello”; char buffer =h,e,l,l,o,0 定义数组时可以指定元素个数,也即数组的大小;一旦指定了元素个数,则给数组赋值的元素个数一定要小于等于指定的个数。 如: char buffer7=“hello!”; /right char buffer6=“hello!”; /error (3)字符指针 指向字符类型的指针称为字符指针。 如: char * str=“abc”; 字符串常量和字符数组名都具有地址特性,当把它们赋给一个字符指针后,编译器规定: 输出字符指针就是输出字符串; 输出字符指针指向的对象(*),就是输出单个字符。,二者等价,例如: #include using namespace std; void main( ) char buffer10=“ABC”; char *pc; pc=“hello”; coutbufferendl; /输出ABC coutpcendl; /输出hello pc+; coutpcendl; /输出ello cout*pcendl; /输出e pc=buffer; coutpc; /输出ABC ,()字符数组和字符指针的区别 字符数组也是字符指针,但是是字符指针常量,即const char *类型,也即字符数组一旦定义好,字符数组名是不能被重新赋值的 而这里的字符指针类型char*用来定义字符指针变量,它被赋值后是可以再次赋值的 访问单个字符的方式不一样,字符数组采用数组名加下标的方式,字符指针采用字符指针加*的方式 例如: #include using namespace std; void main( ) char buffer10=“ABC”; char *pc=“hello”; coutbufferendl; /输出ABC coutpcendl; /输出hello pc=“hi”; /right coutpc; /输出hi buffer=“hi”; /error coutbuffer2endl; /输出C字符 cout*pcendl; /输出h字符 ,字符串输出 调用格式: C+: cout 字符串; C: printf(“%s”,字符串名); puts(字符串首地址); 功能:输出字符串。 例如: char* s=“hello”; char ss=“Jim”; couts,ssendl;,(5)字符串的相关操作,char buffer10=“ABC”; char *pc=“hello”; printf(“%s”,buffer); /puts(buffer); printf(“%s”,pc); / puts(pc);,字符串输入 a.调用格式1: C+: cin字符串变量; C: scanf(“%s%s”,s1,s2); 功能:输入一个无空白字符的字符串。 例如:char s150,s250; cins1s2 ; /scanf(“%s%s”,s1,s2); 若输入ABCD 123XYZ WTR 则s1和s2分别取得的值为ABCD和123XYZ,b.调用格式2: C+: cin.getline(字符数组名,变量大小) C: gets(字符数组名) 功能:从键盘输入一个以enter键标志结束的字符串。 例如: char s81; cin.getline(s,81); / 也可以 gets(s);,关于char * 类型字符串的输入 字符指针的赋值可以通过程序中”=“赋值,也可以通过输入赋值 数组定义好后可以输入时直接赋值,但对于字符指针变量,应先分配空间再赋值 例如: C语言版字符指针类型字符串输入 C+版字符指针类型字符串输入,字符串连接函数strcat (要包含头文件) 调用形式: char* strcat(字符数组1,字符串2); 功能:将字符串2连接于字符数组1的后面,函数返回连接以后的结果. 例如: char str120=”This is a”; char str2 =” string”; / 也可以为char *str2=“ string.”; printf(%sn, strcat(s1,s2); printf(%s,%sn,s1,s2); 输出:,This is a string This is a strings , string,字符串拷贝函数strcpy (要包含头文件) 调用形式: char* strcpy(字符数组1,字符串2); 功能:将数组2 拷贝到 数组1中,并返回字符数组1 例如: char s110=abcdef; char *s2=def; printf(%sn,strcpy(s1,s2); printf(s1=%s,s2=%sn,s1,s2); 输出: def s1=def,s2=def 思考题: 若有 char s1=“abc”; char s2=“def”; /或者char * s2=“def”; 则使用”=“进行赋值s1=s2可不可以?为什么?,字符比较函数strcmp (要包含头文件) 调用形式: int strcmp(字符串1,字符串2); 功能:将两字符串的字符从左到右逐个进行比较.返回值为比较结果. 字符串1=字符串2 返回值为0 字符串1字符串2 返回值为1 字符串1字符串2 返回值为-1 例如: i=strcmp(”chinese”,”china”); 则: i等于1,测试字符串长度函数strlen (要包含头文件) 调用形式: int strlen(字符串); 功能: 测试字符串中字符个数,并将个数返回. 例如: char str110=”Turbo c”; cout strlen(str1); 输出: 7,求子串位置strstr (要包含头文件) 调用格式:char* strstr(字符串,子串); 功能:在字符串中寻找与子串相同的子串,如找到,返回该字符串的从子串起始处开始的后半部分,否则返回一空字符串。 例如:char s=“abcdefghi”; couts3 strstr(s,”def”); 则输出为:,d defghi,反转字符串strrev (要包含头文件) 调用格式:char * strrev(字符数组) 功能:将字符数组反转,并改变原来的存储,同时将反转后的字符串返回 例如: char s1=“abc”; printf(“%sn”,strrev(s1); /输出cba,改变字符串中的全部字符strset(要包含string.h) 格式:char* strset(字符数组, char b) 功能:将字符数组中的每个字符都用b字符来取代,并将改变后的字符数组返回。 例如:char s1=“abc”; coutstrset(s1,x),s1endl; 输出:xxx,xxx,查找单个字符strchr 格式:char* strchr(字符串, char b); 功能:在字符串中查找b字符,若找到,则返回从找到的位置开始后的整个字符串,若没找到,则返回null. 举例: #include #include using namespace std; void main() char s1=abcde; coutstrchr(s1,c)endl; /输出cde ,2、string类型,string是C+中的自定义类型,它可以方便地执行C-串所不能直接执行的一切操作。 定义方式: string s1=“Hello”, t; / s1对象的字符串值为Hello string s2(“Hello”); /s2对象的字符串值为Hello string t(15,H); /t对象是由15个H字符构成的字符串 string u(15); /u对象是由15个空白字符构成的字符串,举例 /f0305.cpp #include #include /程序中使用了reverse()函数 #include using namespace std; void main() string a, s1=Hello ; string s2=123; a=s1; /复制 cout(a=s1? :not)equal n; /比较 cout(a+=s2)endl; /连接 reverse (a.begin(),a.end() ); /倒置串 coutaendl; couta.replace(0,9,9,c) endl; /设置 cout( s1.find(ell) !=-1 ? :not)found n; /查找串 cout( s1.find(c) != -1 ? : not)found n; /查找字符 ,equal,Hello 123,321 olleH,ccccccccc,found,not found,string类型的输出: string s1,s2; getline(cin,s1); /输入中可以有空格 cins2; /输入中不能有空格 couts1endls2endl; string类型较之字符指针的优缺点 优点:使用灵活方便 缺点:当字符处理量大的时候,性能上逊于字符指针,其它复杂数据类型,数组 向量* 指针 引用 结构与联合(补充),
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!