1、1PPT课件 课程性质:通识基础课 课程目标:理解并熟练运用C语言进行结构化程序设计理解并熟练运用C+语言进行面向对象程序设计 课程安排:50%课堂讲授;50%上机实验 课程考核:平时成绩40%;期末笔试60%2PPT课件 第一部分 C语言 数据类型 运算符 基本语句 函数 指针 第二部分 C+语言 类和对象 引用 友元 继承 多态和虚函数 抽象类 模板 运算符重载 I/O流3PPT课件 教材 C+程序设计教程 钱能 清华大学出版社 参考书目 C语言程序设计 谭浩强 清华大学出版社 面向对象的理论与C+实践 王燕清华大学出版社 4PPT课件 程序设计语言 程序与算法 结构化程序设计 面向对象程
2、序设计5PPT课件 机器语言 汇编语言 高级语言CC+JavaBasicC#6PPT课件 C+编程流程 程序编辑编译链接可执行文件7PPT课件 程序代码 算法求解特定问题的一组有限的操作序列 程序程序=算法算法+数据结构数据结构8PPT课件 顺序结构 选择结构 循环结构9PPT课件 出现的原因 面向对象的基本概念封装继承多态10PPT课件#includeint main()cout“Hello,World!”“新建”选择“C+Source File”,输入文件名,点“确定”程序调试12PPT课件#includeint main()int x,y;/*定义变量x和y*/cout“请输入x的值:”
3、x;cout“请输入y的值:”y;cout“x+y=”x+yendl;/输出相加之和 return 0;13PPT课件 缩进对齐 写注释14PPT课件15PPT课件16PPT课件 数据类型:一定的数据在计算机的内部表示;该数据所表示的值的集合;在该数据上的一系列操作。17PPT课件 整型 字符型 枚举型 布尔型 浮点型 字符串型 数组 指针和引用(*)18PPT课件 常量:程序运行过程中不能被改变的量 如:整型常量(如12、0、-3为整型常量)实型常量(4.6、-1.23为实型常量)字符常量(a、d字符常量)19PPT课件 变量:在程序运行过程中,其值可以被改变的量称为变量。每个变量都必须有一
4、个名字变量名,变量命名遵循标识符命名规则:变量命名的规定:+语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。变量必须先定义后使用20PPT课件 各整型的范围:取决于不同的编译器 类型 类型说明符 长度 数的范围 基本型 int 4字节 -231231-1 短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1 无符号整型 unsigned 4字节 0232-1 无符号短整型 unsigned short 2字节 0 216-1 无符号长整型 unsigned long 4字节 0(232-1)21PPT课件 整型字面值分
5、八进制,十进制和十六进制不同表示如:0123 /8进制 0 x12af3 /16进制 12345 /10进制 超过表示范围的整型数其值不可预料或者出错如:int a=12345678912345678912345;/错22PPT课件 整型数的操作:+,-,*,/,%,=,!,=,=,=,&,|,&=,|=,&,|,&=,|=,!=,=,+=,-=,*=,/=,%=,+,-,,,?:23PPT课件 变量说明的一般形式为:变量说明的一般形式为:类型说明符 变量名标识符,变量名标识符,.;int a,b,c;/a,b,c为整型变量long x,y;/x,y为长整型变量unsigned int p,q
6、;/p,q为无符号整型变量24PPT课件 用一对单引号括起来的单个字符,称为字符常量 字符变量的类型关键字为char,一般占用1字节内存单元 字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。可作为整数和字符两种形式输出,可对字符进行整数运算(ASCII码值)语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。25PPT课件 语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。其它如下表其它如下表:字符形式ntvbrf dddxxh功能换行横向跳格(即跳到下一个输出区)竖向跳格退格回
7、车走纸换页反斜杠字符“”单引号(撇号)字符1到3位8进制数所代表的字符1到2位16进制数所代表的字符26PPT课件 输出形式与整型数不同:int a=65;char b=65;couta“n”;coutb“n”;结果为:65 A27PPT课件 自定义整数区间,甚至列举单个整数值 enum Week Mon,Tue,Wed,Thu,Fri,Sat,Sun;最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符)编程中将其当作整数常量用如:int a=6;if(a=Sun)cout“Sundayn”;28PPT课件 表示范围仅含整数和1,也可以表示成true和false,相当于:因为条件表达
8、式、逻辑运算的结果都是因为条件表达式、逻辑运算的结果都是或,所以,相当大数量的表达式的值与或,所以,相当大数量的表达式的值与布尔型对应布尔型对应 例:例:bool a=3 /true bool b=0 /false29PPT课件 浮点型常量的表示方法小数形式:0.123指数形式:3e-330PPT课件 浮点型分为:单精度(float型)双精度(double型)长双精度型(long double)类型 位数 数的范围 有效数字float 32 10-37 1038 67 位double型 64 10-30710308 1516位long double 128 10-4931104932 1819
9、位31PPT课件 浮点型变量的赋值float f1=19.2fdouble f2=19.232PPT课件(1)语言允许在定义变量的同时使变量初始化。如如:int a=3;/指定为整型变量,初值为 float f=3.56;/指定为浮点型变量,初值为.56 char c=a;/指定为字符变量,初值为a33PPT课件(2)可以使被定义的变量的一部分赋初值。如如:int a,b,c=5;表示指定、为整型变量,但只对初始化,c的初值为(3)如果对几个变量赋以同一个初值,应写成:int a=3,b=3,c=3;表示、的初值都是。不能写成 int a=b=c3;34PPT课件 用户输入圆的半径,求出圆的面
10、积并输出。#include#include int main()double r,mj;cout请输入圆的半径:r;mj=3.14*r*r;cout圆的面积是:mjendl;return 0;35PPT课件输入矩形的长和宽,求矩形的周长并输出。#includeint main()double x,y,zc;cout请输入矩形的长:x;cout请输入矩形的宽:y;zc=2*x+2*y;cout矩形的周长是:zcendl;return 0;36PPT课件 数组是同类元素的集合,它的元素排列在连续的空间中,按下标来标记 描述数组必须给出元素类型,元素个数 元素个数必须在编程时确定,任何变量都不允许
11、数组的定义格式为:类型名 数组名常量表达式 数组下标从0开始37PPT课件例:int aa;/表示int a97;int n=100;int an;/错:元素个数必须预知 const int n=100;int an;/ok int a ;/错:无元素个数 int a =1,2,3,4,5 ;/ok:通过初始化确定元素个数38PPT课件 数组初始化可选,但须遵循语法无初始化的数组按规定取默认值 int array15=1,2,3,4,5,6;/错:初始值个数超元素个数int array25=1,2,3,4 ;/错:不能以逗号方式省略int array35=1,2,3,;/错:同上int arr
12、ay45=;/错:初始值不能为空int array55=1,2,3 ;/ok:后面元素取0int array65=0;/ok:元素全为0int array75;/ok:元素值不确定int a35=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 ;39PPT课件二维数组二维数组的定义格式为:类型名 数组名常量表达式常量表达式intint a34;/a a34;/a为为3 34(34(3行行4 4列列)的数组的数组float b510;/bfloat b510;/b为为5 510(510(5行行1010列列)的数组的数组40PPT课件二维数组的初始化分行赋值分行赋值,如:如:int a
13、34=1,2,3,4,5,6,7,8,9,10,11,12;全部数据全部数据写在一个大括号内,如写在一个大括号内,如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;部分元素赋值部分元素赋值,如如:int a34=1,5,9;仅对仅对a00、a10、a20赋值,其余元素未赋值赋值,其余元素未赋值(编译器自动为未赋值元素指定初值(编译器自动为未赋值元素指定初值041PPT课件二维数组的初始化如果对全部元素赋初值,则如果对全部元素赋初值,则第一维的长度可以第一维的长度可以不指定不指定,但必须指定,但必须指定第二维第二维的长度。的长度。例例:int a34=1,2,3,4,5,
14、6,7,8,9,10,11,12;与下面定义等价:与下面定义等价:int a 4=1,2,3,4,5,6,7,8,9,10,11,12;42PPT课件 斐波那契数列如下斐波那契数列如下 F0=1 F1=1 Fn=Fn-1+Fn-2 使用数组求出斐波那契数列的前使用数组求出斐波那契数列的前5项,并输项,并输出。出。43PPT课件#include int main()int F5;F0=F1=1;F2=F0+F1;F3=F1+F2;F4=F2+F3;cout斐波那契数列的前5项是:F0 F1 F2 F3 F4endl;44PPT课件 C-串C语言中没有字符串类型char buffer7=“Hell
15、o!“;本质是一个字符数组Hello!0 72 101 108 108 111 33 045PPT课件 知道了知道了C-C-串首地址串首地址,即可知道整个串即可知道整个串,所以所以可以用字符首址可以用字符首址(字符指针字符指针)来操作来操作C-C-串串,但要注意,串的第一个字符与整个串的操但要注意,串的第一个字符与整个串的操作不同作不同,如如,C-,C-串的输出操作串的输出操作:char*str=”Hello”;cout *str endl;/显示显示H cout str 的读入方式总是将前导的空格(所谓空格,即包括空格、回车、水平或垂直制表符等)滤掉,将单词读入,在遇到空格时结束本次输入 g
16、etline总是将行末的回车符滤掉,将其整行输入对字串”Hello,How are you?”的两种输入方式 for(string s;cins;)couts”“;coutsendl;string s;getline(cin,s);coutsendl;48PPT课件指针是指针是一种特殊的变量一种特殊的变量,它是,它是存放地址存放地址的的指针必须初始化或者赋值(指向了数据)后,才能进行间接访问(间访)操作 int*ip;int iCount=18;int*iPtr=&iCount;/初始化 ip=&iCount;/赋值*ip=8;/间访操作20008地址:2000iCountip2000iPtr
17、49PPT课件 为表示指针变量和它指向的变量之间的关系,用为表示指针变量和它指向的变量之间的关系,用指针运算符指针运算符“*”表示。表示。运算符运算符“&”表示取地址。表示取地址。例如例如int*num_pointer;int num=3;/*将将3直接赋给变量直接赋给变量num*/num_pointer=#/使使num_pointer指向指向num*num_pointer=3;/*将将3赋给指针变量赋给指针变量num_pointer所指向的变量所指向的变量*/50PPT课件 定义指针变量的一般形式为基类型基类型 *指针变量名;指针变量名;51PPT课件下面都是合法的定义:float
18、*pointer_;char*pointer_;可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。例如:例如:pointer_;pointer_;52PPT课件(1)指针变量前面的指针变量前面的“*”,表示该变量的类型为指针型,表示该变量的类型为指针型变量。变量。例例:float *pointer_1;指针变量名是指针变量名是pointer_1,而不是,而不是*pointer_1。(2)在定义指针变量时必须指定在定义指针变量时必须指定基基类型。类型。需要特别注意的是,只有整型变量的地址才能放到指向需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面
19、的赋值是错误的整型变量的指针变量中。下面的赋值是错误的 float a;int *pointer_1;pointer_1=&a;53PPT课件 指针加减整数的操作表示空间位置上的挪动,但是挪动的字节数与其数据类型相关:对float指针加6实际增加了24个字节对long int指针加5实际增加了20个字节对char指针减7实际减少了7个字节对double指针减2实际减少了16个字节54PPT课件 数组名本身就是表示元素集合的首地址数组名本身就是表示元素集合的首地址可以将数组名赋给指针可以将数组名赋给指针 int a3;a1=1;a2=2;a3=3;int*iP=a;cout*(iP+2)“n”;
20、结果为:355PPT课件 引用必须初始化,因为引用总是附属于某个实体引用必须初始化,因为引用总是附属于某个实体int someInt=5;int&rInt=someIne;/初始化修改引用的值,即是修改了附属的实体值修改引用的值,即是修改了附属的实体值int a=5;int&ra=a;ra=8;couta“n”;结果为:856PPT课件 运算符:狭义的运算符是表示各种运算的符号。运算符:狭义的运算符是表示各种运算的符号。C+语言运算符丰富,范围很宽,把除了语言运算符丰富,范围很宽,把除了控制语控制语句和输入句和输入/输出输出以外的几乎所有的基本操作都作以外的几乎所有的基本操作都作为运算符处理,
21、所以为运算符处理,所以C+语言运算符可以看作是语言运算符可以看作是操作符操作符。C+语言丰富的语言丰富的运算符构成运算符构成C+语言语言丰富的表达式丰富的表达式(是运算符就可以构成表达式)。(是运算符就可以构成表达式)。运算符丰富、表达式丰富、灵活。运算符丰富、表达式丰富、灵活。在在C+语言中除了提供一般高级语言的算术、关语言中除了提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值运算符,位操作系、逻辑运算符外,还提供赋值运算符,位操作运算符、自增自减运算符等等。甚至数组下标,运算符、自增自减运算符等等。甚至数组下标,函数调用都作为运算符。函数调用都作为运算符。57PPT课件+,-58PP
22、T课件C中各类运算符的优先级中各类运算符的优先级:初等运算符初等运算符()、单目运算符单目运算符!、!、+、+、(类型类型)算术运算符算术运算符、/、%,+、关系运算符关系运算符、=,=、!=逻辑运算符逻辑运算符&、条件运算符条件运算符?:赋值运算符赋值运算符=、+=、=、=、/=、%=逗号运算符逗号运算符,59PPT课件基本的算术运算符基本的算术运算符:(加法运算符,或正值运算符,如:、)(减法运算符,或负值运算符,如:、)*(乘法运算符,如:*)(除法运算符,如:)(模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。60PPT课件算术表达式和运算符的优先级与结合性基本的算术算术表
23、达式和运算符的优先级与结合性基本的算术运算符运算符:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合+语法规则的式子,称为+算术表达式。运算对象包括常量、变量、函数等。例如例如:*.5a 是一个合法的表达式。61PPT课件强制转换是通过类型转换运算符来实现。一般形式:(类型说明符)表达式功能:把表达式的结果强制转换为类型说明符所表示的类型。(int)a 将将a的结果强制转换为整型量。的结果强制转换为整型量。(int)(x+y)将将x+y的结果强制转换为整型量。的结果强制转换为整型量。(float)a+b 将将a的内容强制转换为浮点数,再与的内容强制转换为浮点数,再与b相加相加无论隐式
24、转换,强制转换都是临时转换,不改变数据本身的类型和值。62PPT课件自增、自减运算符自增、自减运算符(+-)(+-)作用是使变量的值增或减如如:,(在使用之前,先使的值加 (减),(在使用之后,使的值加(减)63PPT课件i+i+与与+i+i的区别:的区别:是先执行后,再使用的值;是先使用的值后,再执行。例如:例如:;如果i的初值是3,则i的值先变成4,再赋给,j的值均为 ;如果i的初值是3,先将 i的值3赋给,的值为,然后变为64PPT课件注意:注意:(1)自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式,(2)和的结合方向是“自右至左”。自增(减)运算符常用于循环语句中
25、使循环变量自动加。也用于指针变量,使指针指向下一个地址 65PPT课件语言中有的运算符为一个字符,有的运算符由两个字符组成,为避免误解,最好采取大家都能理解的写法。例如:不要写成i+j的形式,而应写成 (i+)+j的形式 66PPT课件符号=为赋值运算符。67PPT课件一般形式:赋值表达式例:x=10 为一赋值表达式 其中又可以是一个赋值表达式。例:x=(y=10)相当于 y=10;x=y 由于赋值号为右结合性,于是()可省略,即为:x=y=10;68PPT课件例:a+=a =aa (设a12)又:a=5+(c=6)c=6,a=11 a=(b=4)+(c=6)b=4,c=6,a=10 a=(b=10)/(c=2)b=10,c=2,a=5进一步,还可用复合赋值运算符作下列运算:步骤:aa144.a =a a a=a a a=12 144=132 a+=132 a=a+(132)=26469PPT课件 一般形式:表达式1,表达式2,表达式3,表达式n其计算规则:先计算表达式1,再计算表达式2,.最后值为表达式n的值。例:a=35,a 4 则:先计算3 5,a15,a 4=60,结果为60。70PPT课件又如:(a=35,a 4),a+5结果为20(作为逗号表达式的值)a+5a 即 20a.3 5=15a a 4=60 (此时a值仍未变)71PPT课件