C++语言的简史与特点C++语言是在C语言的基础上发展起来的C++是一种典型的面向对象的语言本教材的重点是结构化的程序设计,对面向对象的程序设计,只做初步介绍。简单的C++程序最简单的程序Voidmain(){}1、程序:就是用计算机语言对程序要完成的任务(即功能)的描述2、源程序文件是一种文本文件3、C++源程序文件的扩展名是CPP函数:用特定格式描述的,具有特定功能的程序模块函数定义:格式:类型修饰符函数名(形式参数表)函数体形式参数表是由圆括号括起来的一系列形式参数函数体是大括弧括起来的一系列C++语句如:voidmain(){}类型修饰符函数名是main形式参数可省括号不可省函数体中无语句,但{}不能省函数与函数定义C++程序是由一个或多个函数组成的一个C++程序至少有1个函数,即主函数,约定的函数名为main一个最简单的C++程序如:voidmain(){}(即只有一个主函数)主函数(即main函数)是程序的入口,一个应用程序的执行就是从主函数的第1个语句开始的。在C++程序中字母的大小写是区分的。C++程序的组成例1.2设计一个程序,显示“同学们,你们好”#includeiostream.hvoidmain(){cout“同学们,你们好!”;}基本语句:以分号作为结束标记复合语句:用大括号{}括起来的语句序列强调:程序中除引号内的字符以及注释文字以外其它的字符必须是西文字符,不能用中文标点。常量数值常量如:123,1.2字符常量如:‘a’,’,’(用单引号引起来的)字符串常量如:“Hello!”(用双引号引起来的)(在第二章中还要做详细介绍,这里只做简单了解)输出语句语句格式:cout表达式[表达式];语句功能:将表达式的值一个接一个地显示在屏幕上说明:——输出操作符,用于连接cout与表达式语句中可以有多个表达式,且用分隔例:cout35‘,’36endl“Hello!”输出结果是:35,36Hello!endl是系统提供的函数,实现回车换行的作用预处理命令#include功能:把一个文本文件的内容包含(插入)到该命令处头文件含有某些函数、变量、常量、对象、数据类型等的说明的文件是一种文本文件,扩展名为.h程序中用到系统提供的对象和函数,也必须先说明后使用。可以用预处理命令将有关的头文件包含进来。使用格式如:#includeiostream.h程序的注释行尾以“//”开头的文字或一行文字中夹在“/*”和“*/”之间的文字C++中的标识符命名规定第一个字符必须是字母或下划线其后的字符可以是字母、数字、下划线C++中的标识符区分大小写赋值语句格式:变量=表达式如:r=5;area=PI*r*r;键盘输入语句语句格式:cin变量[变量]语句功能:通过键盘输入变量的值说明:——输入操作符,用于连接输入流与变量语句中可以有多个变量,且用分隔语句中有多个变量,则键盘输入时应输多个值例,cindata;运行时应通过键盘输入一个变量的值给data变量cinijk;运行时应输入三个变量的值,分别给三个变量程序的编辑、编译、连接和运行应用程序的开发四步骤第一步:编辑(即输入、修改程序)编辑得到源程序,约定扩展名:CPP第二步:编译(语言处理系统分析源程序)编译得到目标程序,约定扩展名:OBJ第三步:连接(语言处理系统将目标程序加以归并、整理)连接得到可执行程序,约定扩展名:EXE(以上三步生成的程序主文件名相同,由第一步确定)第四步:运行(对可执行程序的调试、测试或应用)第二章基本数据类型与表达式2.1C++数据类型概述C++固有5大类的数据类型:整型、实型、数组、指针和记录。C++程序中的数据主要体现为(常量)和(变量)。不同数据类型的数据(存储格式)不同,(所能实施的操作)也不相同。整型数据的基本情况类别类型名称类型修饰符存储空间值域短整型有符号短整型Short2字节-32768~32767间的整数无符号短整型Shortint2字节0~65535间的整数整型有符号整型Int4字节略无符号整型Unsigned4字节略长整型有符号长整型Long4字节略无符号长整型Unsinedlong4字节略测试某种类型或表达式占用的存储空间sizeof操作符用法如:sizeof(short)sizeof(int)coutsizeof(short)‘’sizeof(int)可输出短整型字节数及整型的字节数2。2整型数据整型常量的表示短整型常量的表示方法(同整型常量)整型常量表示方法十进制数用常规十进制数的表示方法,如12(表示十进制12)八进制数用带前导无效0的数字表示,如012(等于十进制10)十六进制数以0x打头的数字表示,如0x12(等于十进制18)任何数制的数字后跟U(或u)表示无符号数如62231U,表示无符号十进制数62231,即若数字后不跟U则表示有符号数。再如0234U,表示无符号八进制数234长整型常量表示方法在整型常量表示的基础上后跟字母L(或小写)如12L,表示十进制长整型数12再如12UL,表示十进制长整型无符号数12再如012L,表示八进制长整型数12(等于长整型十进制10)整型变量的定义和初始化整型变量的定义格式:类型修饰符变量名[=表达式][,变量名[=表达式]]说明:[]中的部分可选变量名的命名规应符合C++中的标识符的规则变量名=表达式,使变量定义的同时也被赋初始值一次定义可同时定义多个变量,用逗号分隔如,unsigneda;intx,th1=4,th2=8,th3=ff(th2+5);intx=6;//该定义等价于以下两个语句intx;x=6;若初始化数据的类型与所定义的的变量的类型不一致,该数据将被转换成与变量类型相同。如ints=109L;//s获得的初值是109而不是109Llongy=99;//y获得的初值是99L2.3字符型数据字符型数据的基本情况类别类型修饰符数据类型的名称存储空间值域字符型Signedchar或Char有符号字符1字节-127~127Char或Unsignedchar无符号字符1字节0~255字符常量的表示一般用单引号将该字符引起来表示如:表示字母A:‘A’表示符号逗号:‘,’单引号,双引号,反斜杠的表示:应在引号内的字符前加一个\,分别表示成‘\’’,‘\”’和‘\\’单引号内用\后跟一字母表示某些控制字符,如‘\r’表示回车(CR)‘\t’表示横向跳格(HT)‘\v’表示纵向跳格(VT)‘\a’表示鸣响(BEL)‘\b’表示退格(BS)‘\f’表示换页(FF)‘\n’表示换行(LF)这种以\为起始标记表示的字符称为转义字符,它在存储进占用一个字符的长度单引号内\后跟一数字表示ASCII码为该数值大小的字符若\后是一无前导的数,理解为该数是八进制数,如‘\0’表示ASCII码为0的字符,即字符NUL‘\15’表示ASCII码为13的字符,即控制字符CR(回车)若\后是一X(或x)打头的数,理解为该数是十六进制数,如‘\x0D’表示ASCII码为13的字符,即控制字符CR(回车)’\x0A’表示ASCII码为10的字符,即控制字符LF(换行)单引号内\后跟除上述情况以外的其他字符,就表示该字符本身,如‘\d’表示字母dC++字符串:用双引号引起来的字符序列C++中的每个字符串常量均以‘\0’作为字符串结束符,字符串结束符占用一个字符的内存空间字符串的长度是字符串中包含的字符个数,不包含结束符字符串中每个字符占用一个字节的空间,因此字符串占用的内存空间大小是:字符串长度加结束符占用的1字节双引号内也可以是单个字符,但用双引号引起来的是字符串,必有字符串结束符,因此占用2字节若字符串中有转义字符或上述特殊表示的字符,则计算时一个转义字符长度为1,占用的空间数也为1字节。(计算长度及占用空间时特别要注意)字符型变量的定义和初始化定义格式与整型类似,如charc1,c2=‘A’;//定义了两个变量c1、c2,并且c2被初始化为‘A’字符型与整型的关系在计算机内部每个字符与其ASCII码数值大小的整型对应,如‘A’对应其ASCII码65,‘a’对应其ASCII码97在对字符型变量初始化时,可用其代码进行如charch1=65,ch2=97;//ch1和ch2分别被初始化为‘A’和‘a’在表达式求值过程中,所有的字符被转换为其代码等值的整数。如cout‘A’+’B’;显示在屏幕上的是131再如cout‘A’;输出A但cout65;输出652.4枚举型数据枚举型数据的基本情况枚举是一种用户自定义的数据类型定义枚举型的格式:enum枚举名{符号表}例:先定义类型,再定义变量enumWEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat,}定义了一个类型名为WEEKDAY的数据类型,WEEKDAY是类型说明符,可以用WEEKDAY定义变量WEEKDAYw1,w2=Sat;定义了两个WEEKDAY型的变量w1和w2。枚举型与整型的关系枚举型中的每个符号依次与整数0,1,2,…一一对应如上例中sun对应0,mon对应1,依次对应但是也可以任意规定其对应关系,如enumSomeDigits{one=1,two,five=5,six,seven}则one对应1,two对应2,five对应5,six对应6,seven对应7在输入输出及表达式求值过程中枚举型数据都识别为整型。2.5实型数据实型数据的基本情况类型类型修饰符类型名称存储空间值域有效值单精度Float单精度实型4B略7双精度Double双精度实型8B略15长双精度Longdouble长双精度实型10B略19实型常量的表示双精度单精度长双精度表示方法直接用数值表示在数值后加F(或f)在数值后加L(或l)常规表示3.233.23F3.23L科学表示3.23e-33.23e-3F3.23e-3L实型变量的定义和初始化doublevar1=2.718,var2;定义两个双精度实型变量var1和var2,并把var1初始化为2.718longdoubleld=3.14159;定义一个长双精度实型变量ld,并初始化为3.14159符号常量与常值变量符号常量:用预处理命令定义如:#definePI3.1416使用符号常量的好处:提高程序的可读性、数据的一致性、可维护性常值变量:在定义变量的方法前加const在一般变量的定义前加上保留字const在定时时必须初始化在程序中不允许改变初值如:constdoublePI=3.1415926常值变量与符号常量相比,具有更明确的类型属性2.7数值表达式算术操作符加:+(如3+I)减:-(如k-3)乘:*(如p*q)除和整除:/(如p/q,3.5/2)除数和被除数均为整型时是整除操作,如10/3的值是3,若至少有一个不是整型则是一般意义的除。求余:%只适用于整型数的求余操作,如10%3的值是1取正:+(如+5)取负:-(如-8)位操作符(左移,如k2)左移一位相当于乘2(右移,如k2)右移一位相当于除2|(按位或,如k1|k2)操作数中两个对应位至少有一个是1时结果是1&(按位与,如k1&k2)操作数中两个对应位两者都是1时结果是1^(按位异或,k1^k2如)操作数中两个对应位不相同时结果是1~(按位求反,如~k1)只有一个操作数,对应于0的结果是1,1的结果位是0注:位操作符只适用于整型位操作的操作过程是对二进位操作(即十进制转换成二进制进行操作)如:52操作过程是5的二进制0000000000000101左移两位变成0000000000010100即20(相当于乘两次2)