《C++基础知识.ppt》由会员分享,可在线阅读,更多相关《C++基础知识.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 程序设计语言是人类在计算机上解决实际问题的一种工具。1.1 几个简单的程序几个简单的程序程序设计语言的概念程序设计语言的概念1. 面向过程面向过程的结构化程序设计语言2. 面向对象面向对象的程序设计语言有两类 1)完全面向对象的语言 2)兼顾面向过程和面向对象的混合式语 言。C+语言就是后一种形式的典型代表。 在屏幕上显示:在屏幕上显示:“This is my first program!This is my first program!”程序代码如下:# include /# include /包含基本输入输出库文件包含基本输入输出库文件using namespace std; /usin
2、g namespace std; /使用命名空间使用命名空间stdstdint main() /int main() /主函数名主函数名 cout cout This is my first program! This is my first program! ; /; /屏幕显示屏幕显示 return 0; / return 0; /程序结束程序结束 程序运行结果如下:【例1.1】在计算机屏幕上显示一句话。 This is my first program! This is my first program! 声明区程序区【例1.2】从键盘输入圆的半径,求圆的面积。程序代码如下:/* * *
3、 * * *ex1_2.cppex1_2.cpp* * * * * *#include #include using namespace std;using namespace std; / /声明区声明区#define PI 3.14159#define PI 3.14159float sum(float x);float sum(float x);/函数区,以下为函数区,以下为mainmain函数函数void main()void main() float r,s;float r,s; coutInput r:; coutr; cinr; s=sum(r); s=sum(r); coutr
4、=r s= sendl coutr=r s= sendl; ; / / /* * *函数区,以下为函数区,以下为sumsum函数函数float sum(float x)float sum(float x) return PIreturn PI* *x x* *x;x; #include using namespace std; #define PI 3.14159void main() float r,s; coutr; s=PI*r*r; cout半径为r的圆面积为 sendl; 解法21.2 C+程序的基本结构和要素程序的基本结构和要素 1.2.1 C+程序结构 声明区声明区(1)包含文件
5、:#include ;(2)宏定义:#define PI 3.14159;(3)函数声明:float sum(float x); 函数区函数区 (1)主函数main() (2) 标准库函数(iostream、cmath) (3) 自定义函数(可以没有) 2函数区 每个函数都是由函数头部分与函数体部分组成。程序的执行从main()函数开始。 函数体部分是用一对花括号函数体部分是用一对花括号 括起来的完成该括起来的完成该函数所表达的功能的语句的集合。函数所表达的功能的语句的集合。语句可以是变量及参数的说明语句或执行语语句可以是变量及参数的说明语句或执行语句。每条语句都用分号句。每条语句都用分号“;
6、”结尾。结尾。 1.2.2 C+程序的书写格式 为了提高程序的可读性,C+程序的书写格式有如下约定: (1)每行一般书写一条语句;语句较短时,多条语句可书写在一行内。每条语句以分号结束。 (2)使用向右缩进方法表达程序中的层次结构.(3)可使用多行注释或单行注释以增强程序的可读性。 多行注释以“/*”开始,以“*/”结束,占据多行。 单行注释以“/”开始,占据一行。1.2.3 输入和输出cin: 从键盘输入从键盘输入cinxy; 一旦执行到包含cin的语句,程序将暂时中止执行,等待用户在键盘上输入数据,当用户输入了所有数据,并以回车键结束后,程序会把这些键入的数据形成输入流,用提取运算符“”将
7、该数据流分别存储到各个变量中。 采用空格、Tab键、Enter键将输入的不同数据分开。1.2.3 输入和输出cout: 输出到屏幕输出到屏幕 输出语句的功能是将由各个常量、变量或表达式的值用插入运算符“”形成输出流显示到屏幕。coutx“+”y“=”sumendl; 换行符endl (end line的缩写) 会让输出换到一个新行,使输出信息清晰可读。1.3 C+的词法规则的词法规则 词法规则词法规则: 由一种语言提供的字符集中的字符构造的单词必须遵守该语言的规则。单词涉及标识符、关键字标识符、关键字等。1.3.1 标识符 用来命名用来命名C+程序中的常量、变量、函数、语句标号程序中的常量、变
8、量、函数、语句标号及类型定义符等及类型定义符等 命名规则:命名规则: 由字母、下画线和数字组成的字符序列由字母、下画线和数字组成的字符序列第一个字母必须是字母或下画线,不能是数字第一个字母必须是字母或下画线,不能是数字有大小写之分有大小写之分1.3.2 1.3.2 关键字关键字 被系统定义了的已具有特定含义的标识符。如int , long, struct, class,void等系统已经使用的关键字、函数名或其他已定义的单词不能再定义成标识符。定义标识符时尽可能让标识符有意义,便于阅读,即做到“见名知义见名知义”。 遵守命名规则,例如下列命名:注意Aa、ABC、A_Y、ycx11、_name
9、合法标识符 5xyz、m.x、!abc、x-y 是非法标识符1.4 一个应用程序的开发过程一个应用程序的开发过程 1.4.1 Visual C+ 6.0开发环境 采用Visual C+ 6.0开发环境 ;这是一个集编辑、编译、链接、调试运行于一体的集成环境,即在一个程序的控制下可以分步或一次性地完成编辑、编译、链接、调试运行工作。1.4.2 一个应用程序的开发过程 1启动Visual C+ 6.0开发环境 2创建工程项目 完成后系统会在指定的磁盘路径下创建一个与项目名称相同的文件夹,并在该文件夹下自动生成两个文件名与工程项目相同的文件,扩展名分别为dsp(工程项目文件)和dsw(工作区文件),
10、以及一个Debug文件夹3打开项目文件 打开一个已经存在的项目文件4创建C+源程序文件并添加到项目文件中 一个工程项目可以包含多个源文件,但含有一个工程项目可以包含多个源文件,但含有main()函数的源文件只能有一个。函数的源文件只能有一个。5编译、链接与运行程序 在上页图中单击“Compile”按钮进行编译,单击“Build”按钮进行编译与链接(在没有编译的情况下),单击“Execute Program”按钮进行编译、链接和运行(在没有编译、链接的情况下)。C+源文件的扩展名为 : .cpp编译后生成目标文件,扩展名为: .obj链接后生成可执行文件,扩展名为: .exe例1.2 程序所建立
11、的项目的运行结果如下:应用举例 #include #include using namespace std;int main() double x,y,z; x=-3.5/180*3.14159; y=6.7/180*3.14159; z=sin(fabs(x)+fabs(y)/sqrt(cos(fabs(x)+fabs(y); cout zendl; return 0;应用举例 #include using namespace std;int main() double base_salary, bonus, total_sales, add_bonus, salary; int servi
12、ce_years; coutbase_salary; cout service_years; bonus= service_years*10; couttotal_sales; add_bonus=total_sales*0.03; salary= base_salary+bonus+add_bonus; cout 经纪人月薪为: salaryendl; return 0;第2 2章 数据类型与表达式2.1 C+数据类型数据类型 表1-2 C+基本数据类型2.2 常量与变量常量与变量 常量与变量是C+中最基本的数据描述形式。2.2.1 常量 常量是在程序中值不能被改变的量。C+程序中有4种常量
13、:整型常量整型常量浮点型常量浮点型常量字符常量字符常量字符串常量字符串常量 1整型常量整型常量 整型常量有三种形式:十进制、八进制和十六进制。十进制常量,如: 12、345八进制常量在数值前要加上一个零(0),后面是八进制数(07),如: 011、077 十六进制常量的写法是在数值前加上一个零(0)和一个字母X(大小写均可大小写均可),后面为16进制数(0F),如:0X11、0 xF、0X89AB 都是合法的十六进制常量。 2浮点型常量浮点型常量又称实数型常量,是带有小数部分的实数。十进制数形式,如: 1.2345、1.0、1.、.12345指数形式.E如:12E-3、0.1E2、.12345
14、E6、0E0指数形式表示符“E”大小写均可大小写均可指数部分必须是整数指数部分必须是整数3字符常量 字符常量描述对象为单个字符,用单引号括起来。如 a,A, 1, + 字符数据存储时,是存储该字符对应的ASCII码。因此,字符常量具有整数值,其值是该字符的ASCII码。一个字符常量可以与整数进行加减运算。c1=A+1; /c1赋值后的值为Bc2=a-32; /c2赋值后为A 字符转义序列(补充) 另一种表示字符常量的方法是使用转义字符。在C+中,有一些字符用于控制输出或编译系统本身保留,无法作为字符常量来表示。对此,C+规定,采用反斜杠后跟一个字母来代表一个控制字符,反斜杠后的字符不再作原有字
15、符使用即转义。C+中常用的转义字符中常用的转义字符4字符串常量 字符串常量是用双引号双引号括起来的若干个字符组成的字符序列,如ABCDEF。在C+程序中,任何一个字符串常量都有一个结束符,该结束符是ASCII码值为0的空字符,表示为0。字符串 Hello!“实际存储格式如下H e llo !02.2 .2 变量 变量是值在程序中可以改变的量,变量有名字、类型和值三个要素。变量的类型包括变量的类型包括存储类存储类和和数据类型数据类型两个方面。两个方面。某个变量的值被改变后,将一直保持到下一次被改变。 1变量的定义变量在使用前必须定义。格式如下: ;例如:例如:int i,j,k; /int i,
16、j,k; /定义了三个整型变量定义了三个整型变量 short len;/short len;/定义了一个短整型变量定义了一个短整型变量float average; /float average; /定义了一个浮点类型变量定义了一个浮点类型变量bool sex; /bool sex; /定义了一个布尔型变量定义了一个布尔型变量Char c1,c2; /Char c1,c2; /定义了两个字符型变量定义了两个字符型变量通过定义变量,程序给该变量一个标识符作为它的名字,通过定义变量,程序给该变量一个标识符作为它的名字,指定该变量的数据类型,并根据数据类型分配存储空间指定该变量的数据类型,并根据数据类
17、型分配存储空间的大小的大小对变量进行读写操作时,对变量进行读写操作时,就是找到其对应的内存就是找到其对应的内存单元,对该单元所存储单元,对该单元所存储的数据进行读取或写入。的数据进行读取或写入。7aint a=7;2变量的初始化变量在定义变量的同时,也可以给它赋予一个初值,称为变量的初始化,例如:int i=10; /or: int i(10);or: int i(10);double sum=0.618;/or: double sum(0.618);or: double sum(0.618);char ch=b; /or: char ch(b); or: char ch(b); 注意:注意:
18、 如果定义变量时没有赋初值,则该变量如果定义变量时没有赋初值,则该变量的值是不可预测的,即对应的存储单元内容是的值是不可预测的,即对应的存储单元内容是不确定的,若该变量参与运算则会导致程序的不确定的,若该变量参与运算则会导致程序的逻辑错误。逻辑错误。2.3 运算符与表达式运算符与表达式 2.3.1 算术运算符与算术表达式 1算术运算符双目运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)。 注意: 求值次序与一般数学运算相同,由左向右执行; 优先级别:先乘除余,后加减,括号优先; 除法运算时,若分子分母都为整数,结果也为整数。如:5/2的结果为2 取余运算的两侧均应为整数类型,如 27
19、%10结果为7. 数学表达式(x+y)(x+y)应写为: (x+y)*(x+y) ;x*-y应写为x*(-y) +、-运算可写在变量前或变量后,分别称作前缀运算和后缀运算。如i+,+i,i-,-i等。要理解前缀、后缀在计算上的不同。2自增运算符和自减运算符 (单目运算符)i+; /i增加1,相当于i=i+1; +i; /同上;x=+i; i=i+1;x=i; /将i+1的值赋给x,并使i增加1;x=i+; x=i ; i=i+1; /将i的值赋给x,然后i增加1; +、-运算符只能用于变量,不能用于常量或表达式。运算符只能用于变量,不能用于常量或表达式。(i+)+(i-)-(+i); 此类表达
20、时尽量少用,以增加程序的可读性此类表达时尽量少用,以增加程序的可读性3.类型不同的数据之间的混合算术运算表达式 3.14*5*5-b+32原则:转换成相同的类型后再运算,由低转换成相同的类型后再运算,由低类型转换为高类型,系统自动完成。类型转换为高类型,系统自动完成。charintdoubleChar-short-int-unsigned-long-unsigned long-float-double低低高高例2-1 算术运算。#include using namespace std;int main() int x=7,y=3; double d=7.0; coutx / y = x/yen
21、dl; coutx % y = x%yendl; coutd / y = d/y =、 b; a=b; 关系运算符与其他类型运算符参与运算时,按照优先级别关系运算符与其他类型运算符参与运算时,按照优先级别顺序进行。顺序进行。 a+b=c; (a+b)=c; #include using namespace std;int main() int a=3,b=5; cout a= a ,b= bendl; cout=b的逻辑值是: =b)endl; cout 关系运算式ab的逻辑值是: (ab)endl; cout 关系运算式a=b的逻辑值是: (a=b)endl; cout=b的逻辑值是: =b
22、)endl; cout 关系运算式a!=b的逻辑值是: (a!=b)endl; return 0;例2-2: 几种常见的关系运算演示2.3.3 逻辑运算符与逻辑表达式1逻辑运算符在C+中,逻辑运算符有以下几种:!:逻辑求反(又称逻辑非)&:逻辑与|:逻辑或逻辑运算符的优先级从高到低依次是: !、&、|。 对应的逻辑表达式为: x=7时,结果为1;x=-5时,结果也是1,为什么?2.3.4 赋值运算符与赋值表达式1赋值运算符: “=” x=7;y=6.7/180*3.4159;sum=x+y;2. 赋值表达式i=i+1; /计算过程为由右向左进行int a; a=0.618;/执行后a的值为0m
23、=m+n; m+=n;s=s*e; s*=e += :加赋值运算符 -= : 减赋值运算符*=:乘赋值运算符/=:除赋值运算符%=:取余赋值运算符使用赋值表达式应注意:使用赋值表达式应注意:(1)可以使用赋值表达式连续赋值可以使用赋值表达式连续赋值。例如:int a,b,c;a=b=c=1;表达式a=b=c=1使3个变量均拥有值1。(2)赋值运算符左边的变量称左值,右边的表达式称右值。计算时,先计算右值,再转换其类型为与左值相同的类型,将右值赋给左值,同时赋值表达式具有右值的值。右值类型转换过程是自动完成的,但转换时有数据精度损失。 2.4 常量修饰符 const 例如:const doubl
24、e pi=3.14159;#include using namespace std;int main() const double pi=3.14159; double r; coutr; double circle,area; circle=2*pi*r; area=pi*r*r; cout 半径为r的圆的周长是 circleendl; cout 半径为r的圆的面积是 areaendl; return 0;例2-3 计算圆的周长和面积。(常变量的使用)2.4 常量修饰符 const 注意:使用const本质上还是常量,不能在后面的语句中改变其数值的大小。另一种定义常量的方法,宏定义 #def
25、ine,格式为:格式为: #define 宏名宏名 替换序列替换序列例如:# define PI 3.14159# define MAX_NUMBER 10002.5 2.5 三目运算符与三目条件表达式三目运算符与三目条件表达式在C+中只有一个三目运算符?:,三目条件表达式格式如下: ?:3 先计算,当非0时,三目条件表达式取的值,否则取的值。三目条件表达式的功能可以解释成一个简单的条件语句if-else例如:xy?x:y; /取x、y之间的较大值2.6 逗号运算符与逗号表达式 逗号在C+中可以作为分隔符或运算符。 逗号运算符为双目运算符,它的优先级最低,结合性是从左至右。逗号运算符用来连接两
26、个或两个以上的表达式,形成逗号表达式。 计算逗号表达式时,从左至右依次计算各个表达式,逗号表达式的值取最后一个表达式的值。多用在for循环语句的for关键字后的圆括号内,圆括号内由分号分隔的表达式可以是逗号表达式。(1)():圆括号,用于改变优先级,圆括号内的部分首先计算。(2):数组元素的下标运算符或数组大小定义运算符,其内的部分首先计算。(3). 和-:用于结构体、共用体变量。(4)sizeof:计算一数据类型或一表达式值占用内存的字节数。 格式:sizeof()例如 sizeof(int) sizeof(b) (5)强制类型:作用于一表达式,使表达式的类型强制性转换为指定类型。例如,(i
27、nt)(a+b+1.234567)2.7 运算符的优先级和结合性 运算符的优先级和结合性是确定表达式计算顺序的重要依据。表1-3给出了C+中常用运算符的功能、优先级和结合性。表中绝大部分运算符已作过介绍,其他未作介绍的还有优先级定为0级(最高级)的4个运算符和2个单目运算符(强制类型运算符、sizeof运算符)。下面分别予以介绍。 C+的优先级和结合性比较复杂,通过下面的总结,可以记住:(1 1)除最高级和最低级外,其他运算符的优先级是)除最高级和最低级外,其他运算符的优先级是“一二三赋一二三赋值值”。最高级是圆括号、下标、点、箭头;最低级是逗号。最高级是圆括号、下标、点、箭头;最低级是逗号。
28、“一二三赋一二三赋值值”分别指单目、双目、三目、赋值运算符,它们的优先级也是分别指单目、双目、三目、赋值运算符,它们的优先级也是按此顺序。这样分出了按此顺序。这样分出了6 6大类优先级。在双目运算符中,有大类优先级。在双目运算符中,有1010级,级,顺序是:算术(除求负值运算外分顺序是:算术(除求负值运算外分2 2级)、移位、关系(分级)、移位、关系(分2 2级)、级)、逻辑位(除按位取反运算外分逻辑位(除按位取反运算外分3 3级)、逻辑(除逻辑非运算外分级)、逻辑(除逻辑非运算外分2 2级)。级)。(2 2)单目、三目、赋值运算符的结合性是从右至左,其他运算)单目、三目、赋值运算符的结合性是
29、从右至左,其他运算符的结合性是从左至右。符的结合性是从左至右。 应用举例例1:整型数据的溢出。分析:短整型数据取值范围是-3276832367,如果给某个短整型变量赋予一个超出此范围的值,就会造成上溢或下溢的错误。#include using namespace std;int main() short a=32767; cout a= aendl; a+; cout a+1= aendl; return 0;应用举例例2:温度转换:输入一个华氏温度,计算并输出对应的摄氏温度值。 #include using namespace std;int main() double c,f; cout
30、f; c=5.0/9.0*(f-32); cout 对应于华氏温度 f 的摄氏温度为 cendl; return 0;例3:大小写转换,输入一个字母,判断它是否为大写字母;若是,将其转换为相应的小写字母输出;否则,不用转换直接输出。分析:在ASCII码表中,所有的大写字母是从AZ连续排列的,所有的小写字母也是从az连续排列的。因此,根据大写字母,可以利用如下公式找到对应的小写字母。#include using namespace std;int main() char ch; cout ch; if(ch=A & ch=Z) ch=ch-A+a; cout 将大写转换为小写后,该字母为: ch
31、endl; return 0;大写字母的大写字母的ASCII值值-A+a例4:转义字符的使用。分析:转义字符可以用来表示那些无法显示或通过键盘输入的特殊字符,灵活地使用转义字符可以实现一些特殊的效果。#include using namespace std;int main() cout Hellon ; /使用换行符 cout 1t2t3t4t5n ; /使用制表符和换行符 cout 12345bb78n ; /使用退格符和换行符 coutb?max=a,min=bmax=b,min=a调用求最大公约数函数func1求maxGY调用求最小公倍数函数func2求minGB输出原数a,b以及ma
32、xGY,minGBendint func1(int x,int y)i=0max=ab?a:b,min=ab?b:amax%(min-i)=0min%(min-i)=0maxGY=min-i;return maxGY;i+int func2(int x,int y)i=1max=ab?a:b,min=ab?b:aminGB=i*max;return minGB;i+i*max%min=0实验实验1 1:Visual C+Visual C+集成环境应用集成环境应用 教材实例1.7,1.11,1.12,1.15,1.16 实验要求: (1)熟悉Visual C+6.0工程文件建立过程 (2)熟悉工程编辑、编译、链接、运行方法 (3)熟悉集成环境内运行方法 (4)模拟提交作业(只提交.CPP文件).CPP班次 学号 章次 题号