您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > acm社团第三次上课
数据类型是编程中很重要的东西,不管是函数(包括主函数)、变量、数组都有对应的数据类型,编程时选择合适的数据类型会起到是半功倍的效果。甚至之后你们会觉得现有的数据类型太差了而自己开始写新的数据类型,这就是编程无限的可能性。int,最常见的整型,空间占用4字节,32位,上下界是-2^31到2^31-1,范围长度是2^32。shortint,在c++中不常看见,空间占用2字节,16位,上下界是-2^15到2^15-1,范围长度是2^16。longlong,在c++中一般的大数据,空间占用8字节,64位,上下界是-2^63到2^63-1,范围长度是2^64。这里解释几点:1.c++中也有long类型但是和int是一样的没有区别所以根本没人用,我也就不提了;2.vc++是32位的编译器但是也可以使用64位整型但是必须用非标准的__int64;3.在整型中有两个标识符:signed和unsigned,signed可以忽略它的存在,并没有意义,unsigned表示去掉负数部分,范围长度不变。char,字符型有ASCII码组成的只有128种类型的字符,本质就是将0-127这些整数转成了字母(类似函数)enum,枚举型,说实话这东西从我学过之后就没再看见过,生僻的要死;枚举型跟char型数组相反可以讲字符串或者字符转换成数字(本质就是函数,和数组相反);bool,布尔型,只有true和false;5/60C++语言预定义的转义字符转义字符ASCII码含义‘\a’0x07响铃符(BEL-bell)‘\n’0x0A换行符(LF-LineFeed)‘\t’0x09水平制表符(HT-HorizontalTable)‘\v’0x0B垂直制表符(VT-VerticalTable)‘\b’0x08回退符(BS-Backspace)‘\r’0x0D回车符(CR-CarriageReturn)‘\f’0x0C换页符(FF-FormFeed)‘\\’0x5C反斜杠(\)‘\?’0x3F问号(?)‘\'’0x27单引号(')‘\’0x22双引号()•八进制的表示:‘\ddd’1到3位八进制数所代表的字符•十六进制的表示:‘\xdd’1到2位十六进制数所代表的字符float单精度浮点,c中经常被使用,32位,4字节,上下界-3.4*10^38到3.4*10^38,十进制有效位数7位。double双精度浮点,c++中经常被使用,64位,8字节,上下界-1.8*10^308到1.8*10^308,十进制有效位数15位。longdouble长双精度浮点,不常见,80位,10字节,上下界-1.2*10^4932到1.2*10^4932,十进制有效位数19位。同样解释几点:1.浮点数虽然范围比整形大得多,但是精度非常低,如果位数过长就会变成科学记数法,double大概在8、9位就出现问题。2.浮点数这里同样有signed和unsigned,效果一样忽略小数,范围不变;7/60类型类型名字宽取值范围有效位(有符号)字符(signed)char1-128~127无符号字符unsignedchar10~255(有符号)短整型(signed)short(int)2-32,768~32,767(-215~215-1)(有符号)整型(signed)int2/4-32,768~32,767(-215~215-1)无符号短整型unsignedshort(int)20~65,535无符号整型unsigned(int)2/40~65,535(0~216-1)(有符号)长整型(signed)long(int)4-2,147,483,648~2,147,483,647无符号长整型unsignedlong(int)40~4,294,967,295单精度浮点型float43.4E-38~3.4E+387位双精度浮点型double81.7E-308~1.7E+30815位长双精度浮点型longdouble8/123.4E-4932~1.1E+493219位8/60若运算对象的类型相同,运算结果取运算对象相同的类型。运算对象的类型不同,先将低等类型转换为高等类型后再进行运算,运算结果取高等类型。等级原则如下:2*16.0+’a’doublechardoubledouble←float↑unsignedlong↑long↑unsigned↑int←char,short①向左的横向箭头表示即使在同一种数据类型间进行运算时也要进行转换。用于提高精度②向上纵向箭头表示当运算对象类型不同时的转换方向。类型之间的关系(各类数值混合运算)隐式类型转换(各类数值混合运算)9/60保留字、标识符、内存与地址C++系统中预定义的、在语言或编译系统的实现中具有特殊含义的单词:ifelsewhilesignedthrowunionthisintchardoubleunsignedconstgotovirtualforfloatbreakautoclassoperatorcasedolongtypedefstaticfriendtemplatedefaultnewvoidregisterexternreturnenuminlinetryshortcontinuesizeofswitchprivateprotectedasmcatchdeletepublicvolatilestruct保留字(关键字)一、函数程序由函数构成,每个程序有且只有一个main主函数函数定义:由函数头和函数体构成类型标识符函数名(形式参数表){语句序列}若无返回值,写void若无参数,写void是被初始化的内部变量,寿命和可见性仅限于函数内部floatarea(floatx,floaty,floatz){floatc,s;c=(x+y+z)/2;s=sqrt(c*(c-x)*(c-y)*(c-z));returns;}函数头二、函数的定义函数类型函数名(形式参数类型表){函数体}intmax(intx,inty){intz;if(xy)z=x;elsez=y;returnz;}voidmain(){inta,b,c,m;cinabc;m=max(a,);m=max(c,m);coutmendl;}函数的定义abb函数的调用函数调用在前,定义在后,则须对函数进行说明,函数说明可放在函数调用之前所在的函数内,也可以放在源文件开头、函数的外部。函数说明和函数定义在返回值类型、函数名和参数表上必须要完全一致。三、函数说明函数类型函数名(形式参数类型表);四、函数的调用调用前先声明函数原型:在调用函数中,或程序文件中所有函数之外,按如下形式说明:类型标识符被调用函数名(含类型说明的形参表);函数调用函数名(实参列表)嵌套调用函数可以嵌套调用,但不允许嵌套定义。函数名(实在参数表)实参与形参的个数、位置与类型必须一致。可是同类型的常量、变量或表达式。调用的形式可以是表达式,也可以是语句。函数定义中的形参只有当发生函数调用时,才被分配内存单元。四、函数的调用#includeiostream.hvoidmain(){inta,b,c;intmax(intx,inty);cinab;函数声明c=max(a,b);函数调用coutcendl;}intmax(intx,inty){returnxy?x:y;}函数定义intmax(int,int);【例1】编一程序,输出如右图形。voidpic(intn){}for(inti=0;in;i++){setw(10-i);for(intj=0;j2*i+1;j++)cout*;coutendl;}voidmain(){pic(4);pic(6);}#include”iomanip”五、函数的返回值return表达式;或return(表达式);说明:表达式的类型与函数定义中的类型应一致。若无返回值,可以不写return语句。函数中可以有不止一个return语句。说明:函数类型指函数返回值的数据类型。函数体由说明和执行语句组成。形参可为空,圆括号不能省略。函数体中不允许再嵌套定义函数。对没有返回值的函数,函数类型定为void型。非void型函数函数体中必须有return语句return表达式;return(表达式)void型函数函数体中一般不出现return语句。函数调用和返回的过程:主函数输入数据①调用函数②自定义函数③处理过程函数结束或函数值返回⑤④⑥输出⑦结束⑧注意:数据的输入、输出一般放在主函数中.例:求正整数m,n的最大公约数和最小公倍数21#includeiostreamusingnamespacestd;voidmain(void){inta,b;intfun1(intx,inty);cinab;coutfun1(a,b)endl;}intfun1(intx,inty){intfun2(intm);return(fun2(x)+fun2(y));}intfun2(intm){return(m*m);}34函数调用函数调用函数定义string对象的定义和初始化表3-1string的几个常用构造函数string的几个常用构造函数strings1;缺省构造函数,生成一个空字符串s1strings2(s1);拷贝构造函数,将s2初始化为s1的副本strings3(value);将s3初始化为一个字符串字面值的副本strings4(n,'c');将s4初始化为包含n个'c'字符的字符串string对象的输入输出【例3.1】string对象的输入和输出操作。#includeiostream#includestringusingnamespacestd;//usingstd::string;intmain(){strings1,s2;//定义s1、s2,并初始化s1、s2为空字符串//依次读取字符串一赋给s1,字符串二赋给s2cins1s2;couts1s2endl;//输出s1和s2return0;}表3-2常用的string操作常用的string操作s.size()、s.length()返回s中字符的个数s.empty()如果s为空串,则返回true,否则返回falses.max_size()返回字符的可能最大个数s.capacity()返回重新分配之前的字符容量s.reserve()保留一定量内存以容纳一定数量的字符==、!=、、=、、=、s.compare()按字典序比较字符串=、s.assign()字符串赋值s.erase()清空字符串s1+s2把s1和s2连接成一个新字符串,返回新生成的字符串+=、s.append()在尾部添加字符s[n]、s.at(n)存取s中位置为n的字符,位置从0开始计数find()、rfind()、substr()、find_first_of、find_first_not_of、find_last_of和find_last_not_of子串查找s.insert()插入字符s.replace()字符串替换s.swap()交换两个字符串的内容、getline()从stream读取某值s.c_str()将内容以c_string返回s.data()将内容以字符数组形式返回s.begin()、s.end()提供类似STL的迭代器支持s.rbegin()、s.rend()逆向迭代器s.get_allocator()返回配置器…………string对象的操作1.string的大小和容量函数一个C++字符串存在3种大小,相应的函数分别是:函数size()和length()等价,都返回string对象中字符个数。函数empty()判断字符串是否为空,判断字符串是否空也可以利用函数size()或者length(),将长度与0比较;函数max_size(),所获取的大小是当前字符串最多能容纳的字符数,和机器本身的限制或者字符串所在位置连续内存的大小有关系,例如,在某台PC上:cout
本文标题:acm社团第三次上课
链接地址:https://www.777doc.com/doc-2895929 .html