资源描述
第二通过例子学习11、获得的成功越大,就越令人高兴。野心是使人勤奋的原因,节制使人枯萎。12、不问收获,只问耕耘。如同种树,先有根茎,再有枝叶,尔后花实,好好劳动,不要想太多,那样只会使人胆孝懒惰,因为不实践,甚至不接触社会,难道你是野人。(名言网)13、不怕,不悔(虽然只有四个字,但常看常新。14、我在心里默默地为每一个人祝福。我爱自己,我用清洁与节制来珍惜我的身体,我用智慧和知识充实我的头脑。15、这世上的一切都借希望而完成。农夫不会播下一粒玉米,如果他不曾希望它长成种籽;单身汉不会娶妻,如果他不曾希望有小孩;商人或手艺人不会工作,如果他不曾希望因此而有收益。-马钉路德。程序设计 cs.sjtu 2011.9程序设计-2程序设计 cs.sjtu 2011.9程序设计-3程序设计 cs.sjtu 2011.9程序设计-4程序设计 cs.sjtu 2011.9程序设计-5程序设计 cs.sjtu 2011.9程序设计-6编译预处理编译预处理vC+的的编译分成两个分成两个阶段:段:预编译和和编译v预编译处理程序中的理程序中的预编译命令,即那些以命令,即那些以#开开头的指令的指令v编译预处理主要有:理主要有:库包含:用包含:用#include实现,表示程序使用了某个,表示程序使用了某个库宏定宏定义:用:用#define实现。宏包括不。宏包括不带参数的宏和参数的宏和带参数的宏。不参数的宏。不带参数的宏通常用来定参数的宏通常用来定义符号常符号常量。量。带参数的宏用来定参数的宏用来定义一些一些较为复复杂的操作。的操作。程序设计 cs.sjtu 2011.9程序设计-7库包含的格式库包含的格式v库是是预先做好的一些工具程序。先做好的一些工具程序。v每个每个库要提供一个接口,告要提供一个接口,告诉库的用的用户如何使用如何使用库提供的功能。提供的功能。v库包含就是把包含就是把库的接口文件放入源文件,以便的接口文件放入源文件,以便编译器器检查程序中程序中对库的的调用是否正确。用是否正确。v库包含格式:包含格式:#include:包含了一个系:包含了一个系统库#include“filename”:包含了一个用:包含了一个用户自定自定义的的库程序设计 cs.sjtu 2011.9程序设计-8宏定义宏定义v不不带参数的宏定参数的宏定义通常用于通常用于为程序中的常量取一程序中的常量取一个名字,称个名字,称为符号常量。格式:符号常量。格式:#define标识符符替替换文本文本如:如:#defineRADIUS5#definePI3.14159#defineAREAPI*RADIUS*RADIUSv用用define定定义宏是宏是C语言的言的习惯,在,在C+中有更好中有更好的解决方案的解决方案程序设计 cs.sjtu 2011.9程序设计-9使用符号常量的好处使用符号常量的好处v含含义清楚,提高了程序的可清楚,提高了程序的可读性。性。v在需要改在需要改变一个常量一个常量时能做到能做到“一改一改全改全改”程序设计 cs.sjtu 2011.9程序设计-10C程序的基本组成程序的基本组成v基本的基本的C程序程序结构构/File:hello.cpp/this program prints the message/“hello everyone”on the screen#include int main()std:cout “hello everyone”std:endl;return 0;程序注程序注释预处理命令理命令主程序主程序程序设计 cs.sjtu 2011.9程序设计-11主程序主程序v主程序由一个或多个函数主程序由一个或多个函数组成成v每个程序都必每个程序都必须有一个名有一个名为main的函数,的函数,它是程序的入口。它是程序的入口。程序设计 cs.sjtu 2011.9程序设计-12函数的构成函数的构成intmain()函数函数头std:cout“helloeveryone”std:endl;return0;函数体与与PYTHONPYTHON不同,不同,C+C+的函数体必须用一对花括号括起来。的函数体必须用一对花括号括起来。事实上,事实上,PYTHONPYTHON中所有必须缩进的语句,在中所有必须缩进的语句,在C+C+中都必须用花中都必须用花括号括起来。括号括起来。程序设计 cs.sjtu 2011.9程序设计-13输出流对象输出流对象std:coutv“流流”指的是指的是设备之之间传递的数据流的数据流v输出流是出流是传给输出出设备的数据流的数据流vcout代表代表显示器示器v格式格式将将hello显示在屏幕上:示在屏幕上:std:cout“hello”std:cout“hello,everyone”std:endlvstd:endl表示表示换行行程序设计 cs.sjtu 2011.9程序设计-14名字空间名字空间v在大型的程序在大型的程序时,每个源文件可能由不同的开,每个源文件可能由不同的开发者开者开发。不同的源文件中可能有同。不同的源文件中可能有同样的名字。当的名字。当这些源文些源文件件连接起来形成一个可接起来形成一个可执行文件行文件时,就会造成重名。,就会造成重名。v名字空名字空间是把一是把一组程序程序实体体组合在一起,构成的一个合在一起,构成的一个作用域。作用域。v一个名字空一个名字空间中不能有重名,不同的名字空中不能有重名,不同的名字空间中可以中可以定定义相同的相同的实体名。当引用某个体名。当引用某个实体体时,需要加上名,需要加上名字空字空间的限定的限定v程序中的程序中的std是是C+中所有中所有标准准库的名字空的名字空间名。名。程序设计 cs.sjtu 2011.9程序设计-15使用名字空间的指令使用名字空间的指令 v格式:格式:usingnamespace名字空名字空间名;名;v一旦用了使用名字空一旦用了使用名字空间的指令,的指令,该名字名字空空间中的所有的中的所有的实体在引用体在引用时就不需要就不需要再加名字空再加名字空间的限定了。的限定了。v第一个程序可以改写第一个程序可以改写为:程序设计 cs.sjtu 2011.9程序设计-16/file:hello.cpp/Thisprogramprintsthemessage“Helloworld.”/Onthescreen#includeusingnamespacestd;intmain()cout“Helloworld.”endl;return0;程序设计 cs.sjtu 2011.9程序设计-17第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-18计算园的面积和周长计算园的面积和周长/file:circle.cpp/该程序用于计算园的面积和周长该程序用于计算园的面积和周长#definePI3.14159/定义符号常量定义符号常量#includeusingnamespacestd;intmain()doubleradius,area,circum;coutradius;area=PI*radius*radius;circum=2*PI*radius;coutendl;cout园的面积为:园的面积为:areaendl;cout园的周长为:园的周长为:circumendl;return0;变量定义变量定义输入阶段输入阶段计算阶段计算阶段输出阶段输出阶段程序设计 cs.sjtu 2011.9程序设计-19程序的组成程序的组成v变量定量定义:C+中的中的变量在使用前都必量在使用前都必须被定被定义。变量定量定义严格指出格指出变量中可以存放的数据量中可以存放的数据类型。型。v输入入阶段段:获取取执行行时才能确定的用才能确定的用户数据。数据。输入入过程一般包括两步程一般包括两步:显示提示信息示提示信息读取数据取数据v计算算阶段段:由:由输入推入推导出出输出的出的过程。通常通程。通常通过各种各种计算得到。算得到。v输出出阶段:段:显示程序示程序执行的行的结果果程序设计 cs.sjtu 2011.9程序设计-20第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-21变量定义变量定义v变量,也称量,也称为对象,是数据的存放之象,是数据的存放之处v变量有三个重要属性:名称、量有三个重要属性:名称、值、类型型。变量定量定义就是就是告告诉编译器器变量的名字及量的名字及该变量中可以存放哪一量中可以存放哪一类数据数据类型的型的值vC+中中变量定量定义的格式的格式:类型名型名变量名量名1,变量名量名2,变量名量名n;v如:如:intnum1,num2;doublearea;v在在C+中,每个中,每个变量在使用前必量在使用前必须被定被定义,以便,以便编译器器检查变量使用的合法性。量使用的合法性。程序设计 cs.sjtu 2011.9程序设计-22变量命名变量命名v名字必名字必须以字母或下划以字母或下划线开开头。C+语言中,名字中出言中,名字中出现的大写和小写字母被看作是不同的字符,因此的大写和小写字母被看作是不同的字符,因此ABC,Abc,abc是三个独立的是三个独立的变量名。量名。v名字中的其它字符必名字中的其它字符必须是字母、数字或下划是字母、数字或下划线,不得使,不得使用空格或其它特殊符号用空格或其它特殊符号v名字不可以是系名字不可以是系统的保留的保留词,如:,如:int,double,for,return等,它等,它们在在C+语言中有特殊用途言中有特殊用途vC+没有没有规定定过名字的名字的长度,但各个度,但各个编译系系统都有自己都有自己规定。定。v名字名字应使使读者易于明白其存者易于明白其存储的的值是什么,做到是什么,做到“见名名知意知意”。程序设计 cs.sjtu 2011.9程序设计-23第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-24数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-25数据类型数据类型整整型型v整型数的表示范整型数的表示范围:由各个:由各个编译器指定。整型数器指定。整型数有三种存有三种存储方式,在方式,在VC中占用的空中占用的空间如下所示如下所示基本型基本型 int:4byte(PC)231(2311)长整型整型l long:long/longint4byte(PC)231(2311)短整型短整型short:2byte(PC)-215(2151)v允允许的操作:算的操作:算术运算、比运算、比较大小等大小等程序设计 cs.sjtu 2011.9程序设计-26整型数的表示整型数的表示码制制v讨论如何将符号位数字化。如何将符号位数字化。0表示正数,表示正数,1表示表示负数。数字的三种数。数字的三种编码方式方式为:原原码反反码补码程序设计 cs.sjtu 2011.9程序设计-27原原码v用符号位和数用符号位和数值表示表示带符号数。正数的符号数。正数的符号位符号位为0,负数的符号位数的符号位为1。数。数值部部分用二分用二进制表示。如用一个字制表示。如用一个字节表示数表示数值:62原原=0 0111110 -62原原=1 0111110程序设计 cs.sjtu 2011.9程序设计-28反反码v正数的反正数的反码与原与原码相同,相同,负数的反数的反码为该数的数的绝对值的原的原码取反。如:取反。如:62反反=0 0111110 -62反反=1 1000001程序设计 cs.sjtu 2011.9程序设计-29补码v正数的正数的补码与原与原码相同,相同,负数的数的补码为该数的反数的反码加加1。如:。如:62补=0 0111110 -62补=1 1000010v大多数大多数计算机系算机系统都用都用补码表示整数表示整数程序设计 cs.sjtu 2011.9程序设计-30整数的内部表示整数的内部表示v整数在整数在计算机内部通常用算机内部通常用补码表示,在表示,在VC中中也是如此。也是如此。v整数运算整数运算时要注意数据的表示范要注意数据的表示范围。如整数用。如整数用两个字两个字节表示表示时,正整数,正整数32767加加1的的结果果为-32768。这称称为整数运算的溢出,系整数运算的溢出,系统不不检查这样的的错误,程序,程序员必必须自己保自己保证程序中程序中不出不出现这样的的错误。程序设计 cs.sjtu 2011.9程序设计-31无符号整数无符号整数v在某些在某些应用中,不可能出用中,不可能出现负数,数,则整型数中有整型数中有一半的数一半的数值范范围是被浪是被浪费的。因此在的。因此在C/C+中可中可以将所有的数都看成正整数,称以将所有的数都看成正整数,称为无符号数无符号数v无符号数的定无符号数的定义:在各种整数:在各种整数类型前加上关型前加上关键词unsigned,变成成unsigned int,unsigned short,unsigned longunsignedint0232-1unsignedshort065535unsignedlong0232-1程序设计 cs.sjtu 2011.9程序设计-32整型常量整型常量v整型常量可用十整型常量可用十进制、八制、八进制和十六制和十六进制表示制表示十十进制:制:123,-234八八进制:制:0123十六十六进制:制:0 x123,0 x3a2fv一旦定一旦定义了一个整型了一个整型变量,可以将一个整型常量,可以将一个整型常量量赋给该整型整型变量。如量。如inta;a=123;或或a=0 x123;都是正确的都是正确的程序设计 cs.sjtu 2011.9程序设计-33数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-34数据类型数据类型浮点数浮点数vVC中,中,实型数以浮点形式表示型数以浮点形式表示v一个浮点数分成尾数和一个浮点数分成尾数和阶码两部分。两部分。阶码表示小数点在表示小数点在该数中的位数,尾数表示数的有效数数中的位数,尾数表示数的有效数值。v浮点浮点类型的分型的分类单精度精度float:占用占用4字字节,3字字节尾数,尾数,1字字节指数指数,精确度精确度7位位,范范围10381038双精度双精度double:占用占用8字字节,5字字节尾数尾数,3字字节指数指数,精确度精确度1516位位,范范围1030710308v浮点数无法精确表示浮点数无法精确表示程序设计 cs.sjtu 2011.9程序设计-35浮点数常量浮点数常量v浮点数常量有两种表示法:浮点数常量有两种表示法:十十进制表示:制表示:1.233.14-5.988科学科学计数法:数法:尾数尾数*10指数指数尾数尾数e指数指数 123e2=123002.25e-3=0.00225 注意:尾数不能注意:尾数不能为空空 e31e3 指数必指数必须为整数整数 2.5e2.3是非法的是非法的程序设计 cs.sjtu 2011.9程序设计-36数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-37数据类型数据类型字符类型字符类型v字符字符类型:存放一个字母或符号,型:存放一个字母或符号,占一个字占一个字节,存放的是字符的内,存放的是字符的内码。v字符字符类型名:型名:char程序设计 cs.sjtu 2011.9程序设计-38字符的机内表示字符的机内表示v字符的机内表示字符的机内表示用字符用字符编码表示。常用的有表示。常用的有ASCII,BCD,EBCDIC等。等。PC机中都用机中都用ASCII.vASCII码的重要特性的重要特性数字数字0到到9是是顺序存放的序存放的字母被分成二段:大写的和小写的。大写字字母被分成二段:大写的和小写的。大写字母是母是连续的,小写字母也是的,小写字母也是连续的的程序设计 cs.sjtu 2011.9程序设计-39可打印字符和非打印字符可打印字符和非打印字符v可打印字符:小写字母、大写字母、数可打印字符:小写字母、大写字母、数字、字、标点符号、空格等点符号、空格等v非打印字符:非打印字符:换行和行和报警字符或响警字符或响铃等等控制字符控制字符程序设计 cs.sjtu 2011.9程序设计-40可打印字符的使用可打印字符的使用v字符常量字符常量a,S,2等用一等用一对单引号括起来的数引号括起来的数据称据称为字符常量字符常量v与与PYTHON不同,不同,C+中的中的单引号和双引号和双引号有不同的用引号有不同的用处。单引号括起来的是引号括起来的是一个字符,双引号括起来的是字符串一个字符,双引号括起来的是字符串程序设计 cs.sjtu 2011.9程序设计-41可打印字符的使用可打印字符的使用v赋值charc1,c2;c1=a;c2=b;c1=97;c2=98;比比较c=9和和c=9?v运算运算 如:如:c1=a;c1=c1+2;c1的的值应为?如如c中存放的是小写字母,中存放的是小写字母,则c-a +1表示什么?表示什么?如如c中存放的是数字(中存放的是数字(09),),则c-0表示什么表示什么?如如c1,c2c1,c2存放的是小写字母,存放的是小写字母,则c2-c1c2-c1表示什么表示什么?程序设计 cs.sjtu 2011.9程序设计-42转义字符转义字符v一些非打印和一些非打印和难以打印的字符需要用以打印的字符需要用转义序列表示序列表示换行符写行符写为n,虽然它由两个字符和然它由两个字符和n来描述,但它表来描述,但它表示一个示一个ASCII字符。反斜杠符号字符。反斜杠符号称称为转义字符。字符。v双引号和双引号和单引号的引号的转义如果在一个串中把双引号如果在一个串中把双引号”用作一个字符,必用作一个字符,必须要要对它它转义,否否则它会它会终结该字符串。字符串。cout“”abc”;输出出“abc”双引号的双引号的单字符表示:可以写字符表示:可以写”,也可以写,也可以写”。v八八进制数制数转义序列序列警告字符警告字符a可以表示成可以表示成:007,07,7程序设计 cs.sjtu 2011.9程序设计-43字符形式字符形式含含义n换行行t水平制表水平制表b退一格退一格r回回车f换页”“ddd1到到3位八位八进制数代表的字符制数代表的字符xhh1到到2位十六位十六进制数代表的字符制数代表的字符常用的转义字符常用的转义字符程序设计 cs.sjtu 2011.9程序设计-44数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-45数据类型数据类型布尔类型布尔类型v布布尔型(型(bool):):标准准C中没有布中没有布尔型数据,型数据,这是是C+中新增的数据中新增的数据类型。占一个字型。占一个字节。它。它的的值为:true,falsev布布尔型数据可以型数据可以进行行逻辑运算运算v布布尔型数据的内部表示:型数据的内部表示:true为1,false为0程序设计 cs.sjtu 2011.9程序设计-46数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-47枚举类型枚举类型v有有时在在设计程序程序时会用到一些特殊的会用到一些特殊的对象,象,这些些对象的取象的取值范范围是有限可数的。如在一个生成日是有限可数的。如在一个生成日历的程序中很可能用到一个表示一个星期中的每的程序中很可能用到一个表示一个星期中的每一天的一天的对象。象。该对象可能取象可能取值的范的范围就是星期日就是星期日到星期六。到星期六。v解决方法解决方法采用采用编码:假:假设0表示星期日,表示星期日,1表示星期一,表示星期一,6表示星期六。然后用一个整型表示星期六。然后用一个整型变量如量如weekday表示表示这个个对象。缺点是可象。缺点是可读性差。性差。符号常量:用符号常量:用#define功能将功能将这些数字定些数字定义为符号常量符号常量定定义一个新一个新类型型程序设计 cs.sjtu 2011.9程序设计-48定义新的枚举类型定义新的枚举类型 v格式:格式:enum枚枚举类型名型名元素表元素表;v定定义一个表示一周中每天的名字的枚一个表示一周中每天的名字的枚举类型:型:enumweekdayTSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;v枚枚举类型型变量的定量的定义:weekdayTweekday;v枚枚举类型型变量的使用:量的使用:赋值:weekday=Friday;比比较:MondayFriday比比较这两个两个值的内部表示的内部表示枚枚举类型不能直接型不能直接输入入输出出程序设计 cs.sjtu 2011.9程序设计-49枚举类型的内部表示枚举类型的内部表示v在内部,枚在内部,枚举类型采用型采用编码表示。当定表示。当定义enumweekdayTSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;时,默,默认用用0代表代表Sunday,1代表代表Monday,6表示表示SaturdayvC+语言的言的编译器也允器也允许明确指出枚明确指出枚举类型的元素的内部型的元素的内部表示。例如,希望从表示。例如,希望从1而不是而不是0开始开始编号,可以号,可以这样定定义enumweekdayTSunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;v也可以从中也可以从中间某一个开始重新指定,如某一个开始重新指定,如enumweekdayTSunday,Monday,Tuesday=5,Wednesday,Thursday,Friday,Saturday;程序设计 cs.sjtu 2011.9程序设计-50数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-51变量赋初值变量赋初值v在在C+中,中,变量定量定义只是只是给变量分配相量分配相应的空的空间vC+允允许在定在定义变量的同量的同时给变量量赋初初值v格式:格式:类型名型名变量名量名=初初值;类型名型名变量名(初量名(初值););如:如:intcount=0;或或intcount(0);都是定都是定义整型整型变量量count,并,并为它它赋初初值0。v可以可以给被定被定义的的变量中的一部分量中的一部分变量量赋初初值,如:,如:intsum=0,count=0,num;定义变量时没有赋初值,然后直接引用该变量是危险的!定义变量时没有赋初值,然后直接引用该变量是危险的!程序设计 cs.sjtu 2011.9程序设计-52数据类型数据类型整型整型实型型字符型字符型布布尔型型枚枚举类型型变量量赋初初值了解占用的内存量了解占用的内存量程序设计 cs.sjtu 2011.9程序设计-53了解占用的内存量了解占用的内存量vsizeof运算符用来了解某一运算符用来了解某一类型或某一表达式型或某一表达式占用的内存量。占用的内存量。vsizeof运算符的用法:运算符的用法:sizeof(类型名型名)或或sizeof(表达式表达式)v如:如:sizeof(float):float类型的型的变量占用的内存量量占用的内存量sizeof(a+15):表达式:表达式a+15的的计算算结果果所占的内存量所占的内存量程序设计 cs.sjtu 2011.9程序设计-54第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-55符号常量符号常量v用用#define定定义符号常量的符号常量的问题所定所定义的符号常量无法的符号常量无法进行行类型型检查#define的的处理只是理只是简单的字符串的替的字符串的替换,可能会引起一些意想不到的可能会引起一些意想不到的错误vC+建建议用用const定定义符号常量符号常量const=;如:如:constdoublePI=3.1415926;程序设计 cs.sjtu 2011.9程序设计-56第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-57算术表达式算术表达式v计算是算是计算机提供的最基本的功能,算算机提供的最基本的功能,算术表达式表达式是完成此功能的工具是完成此功能的工具v算算术表达式由运算符和运算表达式由运算符和运算对象象组成成v算算术运算符:运算符:+-*/%v出出“-”外,所有的算外,所有的算术运算符都是二元运算符。运算符都是二元运算符。“-”可可为二元运算,也可二元运算,也可为一元运算一元运算v优先先级:高:高*/%,低,低+-v结合性:左合性:左结合合v运算运算对象可以是整型、浮点型、字符型和布象可以是整型、浮点型、字符型和布尔型型程序设计 cs.sjtu 2011.9程序设计-58各种类型的数据的混合运算各种类型的数据的混合运算v在在进行运算前,将运算数行运算前,将运算数转为同一同一类型型v转换规则bool、char和和short这些非些非标准的整数在运算前准的整数在运算前都必都必须转换为int。int和和float运算运算时,将,将int转换成成float。int和和long运算运算时,将,将int转换成成long。int和和double运算运算时,将,将int转换成成double。float和和double运算运算时,将,将float转换成成double。程序设计 cs.sjtu 2011.9程序设计-59数学函数库数学函数库v在在C+语言中,其他的数学运算都是通言中,其他的数学运算都是通过函数的形式来函数的形式来实现。所有的数学函数。所有的数学函数都在都在cmath中。中。v要使用要使用这些数学函数,必些数学函数,必须在程序在程序头上上写上写上编译预处理命令:理命令:#include程序设计 cs.sjtu 2011.9程序设计-60cmath的主要内容的主要内容绝对值函数绝对值函数intabs(intx);doublefabs(doublex)exdoubleexp(doublex)xydoublepow(doublex,doubley)doublesqrt(doublex)lnxdoublelog(doublex)log10 xdoublelog10(doublex)三角函数三角函数doublesin(doublex)doublecos(doublex)doubletan(doublex)反三角函数反三角函数doubleasin(doublex)doubleacos(doublex)doubleatan(doublex)程序设计 cs.sjtu 2011.9程序设计-61第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-62变量赋值变量赋值v变量量赋值是通是通过赋值表达式表达式实现,赋值表达式格式表达式格式=作用:将右作用:将右边的表达式的的表达式的值存入左存入左边的的变量,整个表达式量,整个表达式的的值是右是右边的表达式的的表达式的结果。果。注意:注意:x=x+2是正确的表达式是正确的表达式赋值运算符是右运算符是右结合的合的v左左值(lvalue):在:在C+中,能出中,能出现在在赋值运算符左运算符左边的表达式称的表达式称为左左值v赋值语句:句:赋值表达式后面加上分号。表达式后面加上分号。程序设计 cs.sjtu 2011.9程序设计-63赋值时的自动类型转换赋值时的自动类型转换 v当表达式的当表达式的结果果类型和型和变量量类型不一致型不一致时,系,系统会将右会将右边的表达式的的表达式的结果果转换成左成左边的的变量的量的类型,再型,再赋给左左边的的变量。量。v转换规则:实型数型数-整型:舍弃小数部分。整型:舍弃小数部分。整型数整型数-实型数:数型数:数值不不变,但以浮点的形式保存在相,但以浮点的形式保存在相应的的变量中量中Double-float:截取前面七位有效数字存放到:截取前面七位有效数字存放到float变量中量中Float-double:将有效位:将有效位扩展到展到16位位字符型字符型-整型整型变量:将字符型数据放入整型量:将字符型数据放入整型变量的最后一个字量的最后一个字节。如果所用系。如果所用系统将字符将字符处理成无符号量,理成无符号量,则前面前面补0。如果所。如果所用系用系统将字符将字符处理成有符号量,理成有符号量,则扩展符号。展符号。整型整型-字符字符类型:直接将整型数据的最低八位型:直接将整型数据的最低八位赋给字符字符变量。量。程序设计 cs.sjtu 2011.9程序设计-64赋值的嵌套赋值的嵌套v将将赋值表达式作表达式作为更大的表达式的一部更大的表达式的一部分分。如:。如:a=(x=6)+(y=7)等价于分等价于分别将将x和和y的的值设为6和和7,并将,并将6和和7相相加,加,结果存于果存于变量量av赋值运算符运算符=的的优先先级比算比算术运算符低运算符低程序设计 cs.sjtu 2011.9程序设计-65多重赋值多重赋值a=b=c=5 给a,b,c均均赋值5 当用到多重当用到多重赋值时,要保,要保证所有的所有的变量都是同量都是同类型的,以避免在自型的,以避免在自动类型型转换时出出现与与预期不相期不相符的符的结果的可能性。如果的可能性。如变量量d定定义为double,变量量i定定义为int,语句句d=i=1.5;的的结果是:果是:i等于等于1,d等于等于1.0 程序设计 cs.sjtu 2011.9程序设计-66复合赋值运算复合赋值运算v其他运算符与其他运算符与赋值运算符运算符结合的运算符称合的运算符称为复复合合赋值运算符运算符v常用的复合常用的复合赋值运算符有:运算符有:+=,-=,*=,/=,%=v变量量op=表达式表达式;等价于:等价于:变量量=变量量op表达式表达式;v如:如:balance+=deposit;balance-=surcharge;x/=10;salary*=2;程序设计 cs.sjtu 2011.9程序设计-67第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-68自增、自减运算符自增、自减运算符v自增、自减运算符:自增、自减运算符:+,-相当于相当于+=1和和-=1,它有前它有前缀和后和后缀两种用法两种用法+k,k+,-k,k-,但含但含义有所不同。如:有所不同。如:i=3 j=i+i=4j=3 j=+i i=4j=4j=i-i=2j=3 j=-i i=2j=2 程序设计 cs.sjtu 2011.9程序设计-69第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-70强制类型转换强制类型转换v赋值和算和算术运算运算时会会执行自行自动类型型转换v如要想使如要想使4/5的的结果是果是0.8,而不是,而不是0,该怎怎么么办?可以将其中一个写成浮点数。例如:?可以将其中一个写成浮点数。例如:4.0/5或或4/5.0vintx=4,y=5;要想使要想使x/y的的结果果为0.8而而不是不是0,该怎么怎么办?v答案是:用答案是:用强制制类型型转换程序设计 cs.sjtu 2011.9程序设计-71强制类型转换强制类型转换v强制制类型型转换格式:格式:(类型名)(表达式)型名)(表达式)类型名型名(表达式)(表达式)v例如,要想使两个整型例如,要想使两个整型变量量x和和y出的出的结果果为double型,可以用下列型,可以用下列语句句double z;z=(double)x/y;程序设计 cs.sjtu 2011.9程序设计-72转换类型转换类型v强制制类型型转换在在C+类型系型系统中引入了一个漏洞中引入了一个漏洞v为了方便了方便查找找这些些错误,C+提供了在提供了在强制制类型型转换时指明指明转换的性的性质。v转换的性的性质有四种:有四种:静静态转换(static_cast):用于:用于编译器器隐式式执行的任何行的任何类型型转换重解重解释转换(reinterpret_cast)常量常量转换(const_cast)动态转换(dynamic_cast)v格式格式转换类型型(表达式表达式)z=static_cast(x)/y;程序设计 cs.sjtu 2011.9程序设计-73第二章第二章 通过例子学习通过例子学习 第一个程序第一个程序第二个程序第二个程序变量定量定义数据数据类型型符号常量符号常量算算术表达式表达式赋值表达式表达式自增自减运算符自增自减运算符强制制类型型转换数据的数据的输入入输出出程序设计 cs.sjtu 2011.9程序设计-74输入流对象输入流对象cinv键盘流入的数据流,将流入的数据流,将键盘输入的数据入的数据存入存入变量量v格式:格式:cin变量量cin变量量1变量量2变量量n程序设计 cs.sjtu 2011.9程序设计-75用户的响应用户的响应v当程序当程序执行到行到这个个语句句时会停下来等待用会停下来等待用户的的输入入v用用户可以可以输入数据,用回入数据,用回车()结束。束。v当有多个当有多个输入数据入数据时,一般用空白字符(空格、制表,一般用空白字符(空格、制表符和回符和回车)分隔。)分隔。v如:如:a为整型,整型,d为double,则对应于于cinad,用,用户的的输入可以入可以为1213.2 12(tab键)13.2 12 13.2 33程序设计 cs.sjtu 2011.9程序设计-76cin.get v作用:从作用:从键盘接受一个字符接受一个字符v用法:用法:cin.get(ch);或);或ch=cin.get(),都,都是从是从键盘输入一个字符并存放到入一个字符并存放到变量量ch中中v对应的用的用户输入:入:cin.get()可以接收任意可以接收任意的字符,包括空白字符。的字符,包括空白字符。程序设计 cs.sjtu 2011.9程序设计-77如如a,b,c为字符型变量,对应语句为字符型变量,对应语句a=cin.get();b=cin.get();c=cin.get();如果输入如果输入a b c ,则,则a的值是的值是a,b的值是空格,的值是空格,c的值是的值是b。如果将这个输入用于语句:如果将这个输入用于语句:cin a b c,那么变量那么变量a、b、c的内容分别为的内容分别为a、b、c,因为空,因为空格被作为输入值之间的分隔符。格被作为输入值之间的分隔符。程序设计 cs.sjtu 2011.9程序设计-78输出流对象输出流对象cout v将将变量或表达式的内容量或表达式的内容显示在示在显示器上示器上v格式格式输出一个出一个变量的量的值:couta;输出多个出多个变量的量的值:coutabc;输出表达式的出表达式的结果:果:cout“Helloworld”上述情况的上述情况的组合:合:couta+b=a+bendl;程序设计 cs.sjtu 2011.9程序设计-79总结总结v本章介本章介绍了了C+程序的程序的总体体结构及工作构及工作方式方式。具体包括:。具体包括:如何保存用如何保存用户的数据的数据读取用取用户提供的数提供的数值数据;数据;在屏幕上在屏幕上显示文本和数据;示文本和数据;对现有数据有数据进行算行算术运算得到新的运算得到新的结果果程序设计 cs.sjtu 2011.9程序设计-80VC 6.0环境环境vFile/newproject/Win32ConsoleApplicationvFile/newFile/C+SourceFilevRebuidAllvExecute演示演示:一个一个简单的程序的程序(变量量,常量常量,赋值,算算术表达式表达式+=,+,输入入输出出)1 1、最灵繁的人也看不见自己的背脊。、最灵繁的人也看不见自己的背脊。非洲非洲2 2、最困难的事情就是认识自己。、最困难的事情就是认识自己。希腊希腊3 3、有勇气承担命运这才是英雄好汉。、有勇气承担命运这才是英雄好汉。黑塞黑塞4 4、与肝胆人共事,无字句处读书。、与肝胆人共事,无字句处读书。周恩来周恩来5 5、阅读使人充实,会谈使人敏捷,写作使人精确。、阅读使人充实,会谈使人敏捷,写作使人精确。培根培根
展开阅读全文