第3章数据类型简单类型.ppt

上传人:sccc 文档编号:5900679 上传时间:2023-09-01 格式:PPT 页数:38 大小:188.04KB
返回 下载 相关 举报
第3章数据类型简单类型.ppt_第1页
第1页 / 共38页
第3章数据类型简单类型.ppt_第2页
第2页 / 共38页
第3章数据类型简单类型.ppt_第3页
第3页 / 共38页
第3章数据类型简单类型.ppt_第4页
第4页 / 共38页
第3章数据类型简单类型.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《第3章数据类型简单类型.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型简单类型.ppt(38页珍藏版)》请在三一办公上搜索。

1、,2,第3章,数据类型_简单数据类型,本章目录,3.1C+的字符集3.2 标识符和关键字3.3 数据类型简单数据类型(一)数组(二)指针(三)引用(四),数据是程序处理的基本对象在程序中每种数据都应有确定的类型每种数据类型的变量都有确定的存储长度、取值范围及允许的操作。3.C+的字符集(CHARACTERSET)每种语言都使用一组字符构造程序的基本单元,C+的字符集由下列字符组成:大小写英文字母和数字字符其他字符*,._:;?“|!#%&()(空格)等,3.标识符和关键字(IdentifiersandReserved words)程序设计语言中为变量、常量、类型、函数等取的名字称为标识符。标识

2、符由大小写字母、数字和下划线组成,并且只能以字母或下划线开始。关键字是编译器已预定义好的,具有特定含义的标识符,也称为保留字。C+保留字auto break case char const continue default do double else enum extern float for goto if int long register return short signed,sizeof static struct switch typedef union unsigned void volatile while bool catch class const_cast delete

3、 dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_tasm cdecl far huge interrupt near pascal export except fastcall saveregs stdcall seg syscall fortran threa

4、d 红色:C的32个关键字 黄色:C+补充的29个关键字白色:BC和VC扩充的保留字,下列变量名哪些合法?Way_cool myCarcase Bits32Iptr coutA Lot-vvswitch While52select while,3.数据类型程序中数据分为变量或常量,每个变量或常量都有确定的数据类型。,空类型void数组type 指针type*引 用 type&结构struct联合union枚举enum类class,用于定义基于基本数据类型和外部数据类型,外部数据类型,注:黄色标识的类型是C+中有而C没有的,其他两者皆有,类型修饰符short(int)long(int,doubl

5、e)signed,unsigned(char,int)类型定义typedef为已有类型名取一个新名字。typedef int integer;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;,整型常数即整型常量(整数字面值),有三种表示方

6、法:十进制整数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的子集,所以cha

7、r数据可以参与到整数的运算中去,但是在输出上还是按本身类型输出。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)/应用举例:获取当前系统时间枚举型是对整数区间的自定义类型,用户须为区间中的值

8、取名。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;错误虽然枚举值对应整数,但

9、是枚举变量却不能取得整数值。例如: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=tru

10、e;/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类型的值转换成doub

11、le 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

12、area 的const 区中,并以0作为结束符,编译器记下其起始地址.即:地址代表了这个字符串常量。,由于字符串常量的地址属性,所以由相同字符组成的字符串常量是两个不同起始地址的字符串常量。例如:/f0303.cpp#includeusing 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(b

13、uffer1=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)字符指针 指向字符类型的指针称为

14、字符指针。如: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,()字符数组和

15、字符指针的区别字符数组也是字符指针,但是是字符指针常量,即const char*类型,也即字符数组一旦定义好,字符数组名是不能被重新赋值的而这里的字符指针类型char*用来定义字符指针变量,它被赋值后是可以再次赋值的访问单个字符的方式不一样,字符数组采用数组名加下标的方式,字符指针采用字符指针加*的方式例如:#include using namespace std;void main()char buffer10=“ABC”;char*pc=“hello”;coutbufferendl;/输出ABC coutpcendl;/输出hello pc=“hi”;/right coutpc;/输出hi

16、 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

17、字符串变量;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*类型字符串的输入字符指针的赋值可以通过程序中”=“赋值,也可以通过输入赋值数组定

18、义好后可以输入时直接赋值,但对于字符指针变量,应先分配空间再赋值例如: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 stringThis is a string

19、s,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 strcm

20、p(字符串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(字符串,子串);功能:在字符串中寻找与子串相同

21、的子串,如找到,返回该字符串的从子串起始处开始的后半部分,否则返回一空字符串。例如: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字符来取代,

22、并将改变后的字符数组返回。例如: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-串所不能直接执行的一切操作。定

23、义方式:string s1=“Hello”,t;/s1对象的字符串值为Hellostring s2(“Hello”);/s2对象的字符串值为Hellostring t(15,H);/t对象是由15个H字符构成的字符串string u(15);/u对象是由15个空白字符构成的字符串,举例/f0305.cpp#include#include/程序中使用了reverse()函数#includeusing namespace std;void main()string a,s1=Hello;string s2=123;a=s1;/复制 cout(a=s1?:not)equal n;/比较 cout(a

24、+=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类型较之字符指针的优缺点优点:使用灵活方便缺点:当字符处理量大的时候,性能上逊于字符指针,其它复杂数据类型,数组向量*指针引用结构与联合(补充),

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号