版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,课程用书:C+面向对象程序设计 谭浩强 清华大学出版社 (26.0元) 课程安排:总学时 56 (32+24) 上课:114周 学习注意事项: 1.C+概念较多,弄懂概念; 2.改变编程思想; 3.按时上课; 4.一定要看书。,2,C+程序设计初步 C+对C的两个扩充: 对C面向过程机制的改进 增加面向对象的机制 因此C+既支持面向过程的程序设计, 又支持面向对象的程序设计。,3,C+基本数据类型同(长度与C不同) 常量、变量、数组、指针、枚举类型与C相同 变量初始化形式 int a=3, b(10); double x(12.345), y=1.5; 运算符、表达式与C相同,4,C到C+
2、 过渡,第1章:C+初步知识 最简单+程序,使用名空间: #include using namespace std;/ 命名空间std int main( ) cout“ C+ programmingn”; return 0; ,运行结果: C+ programming,5,#include int main( ) cout“ C+ programmingn”; return 0; ,#include using namespace std;/ 命名空间std void main( ) cout“ C+ programmingn”; ,以上程序的另两种形式,6,2) C+的I/O(输入输出)操
3、作: 输出流(插入操作): cout变量或数组元素变量或数组元素 cin 处理标准输入(一般指键盘) cout 处理标准输出(一般指显示器),C到C+ 过渡,7,例题: #include using namespace std; void main() int a,b,c; double x,y; coutab; /输入两个整数 c=a+b; coutx; /输入一个浮点数 y=x*100; coutc=c y=yendl; ,执行程序:Input two integer: 12 15 Input a double: 12.345 c=27 y=1234.5,8,例题: #include #i
4、nclude void main( ) int n; coutn; cout“这个数的十进制数是:”decnendl; cout这个数的八进制数是:octnendl; cout这个数的十六进制数是:hexnendl; ,执行结果: 请输入一个十进制数: 25 这个数的十进制数是: 25 这个数的八进制数是: 31 这个数的十六进制数是:19,9,#include using namespace std void main() char str30; coutstr; /输入字符串 double r; coutr; /输入一个浮点数 cout“Area=3.1416*r*rendl; cout“
5、string=“strendl; ,C到C+ 过渡,运行结果: Input string:abcdefg Input a double: 2.5 Area=19.635 String=abcdefg,10,)用const 定义常类型: 使用形式: const 类型常量名常量; 例如: const int k=100; const float pi=3.14159; const char ch=A; 注意区别: #define M 20 #define pi 3.14159,#define 不是语句,最后没有”;” #define 没有类型的含义,不占有存储空间,11,)函数原型 #includ
6、e using namespace std; int max(int x,int y); /函数原型 int min(int x,int y); /函数原型 void main( ) int a,b; cinab; couty?x:y; int min(int x, int y) return xy?x:y; ,12,)函数原型 #include using namespace std; int max(int x, int y) /函数定义 return xy?x:y; int min(int x,int y) /函数定义 return xab; cout“max=”max(a,b)endl
7、; cout“min=”min(a,b)endl; ,13,4)函数名重载: 多个函数使用相同的名字,但要求函数参数的个数和类型不同。 编译时根据参数的个数或类型,系统自动决定调用那个函数。,14,例题: 函数重载 #include int add(int x,int y) /定义两整数相加 return x+y; char *add(char *x,char *y) /定义两字符串相加 return (strcat(x,y); double add(double x,double y) /定义两双浮点数相加 return x+y; void main() int i=100,j=200; c
8、har a20=“abcd”, b10=“xyz”; double x(12.35), y=8.7e3; coutInteger:add(i, j)n; cout“char:add(a, b)n; coutDouble:add(x, y)n; ,执行结果: Integer: 300 char: abcdxyz Double: 8712.35,15,例题;参数个数不同的重载函数 #include int max(int a,int b) /求两个数最大值函数 return ab?a:b; int max(int a,int b,int c) /求三个数最大值函数 int temp; temp=m
9、ax(a,b); return tempc?temp:c; void main( ) int a,b,c; cinabc; coutab; cout“max=“max(a,b)endl; ,执行结果: 45 81 67 max=81 90 100 max=100,16,例题: 函数重载 #include void print(int); void print(char); void print(char *); void print(double); void main( ) int a(120); double b(6.25); print(a); print(a); print(b); p
10、rint(Hello!); ,void print(int i) coutiendl; void print(char c) coutcendl; void print(char *p) coutpendl; void print(double d) coutdendl; ,运行结果: 120 a 6.25 Hello!,17,5) 函数模板:,将上面程序段中的类型int和double参数化, 即将int和double用一个参数来代替。 T max(T x,T y) return(xy)? x: y; ,例:两个求最大值的函数。函数定义如下: int max(int x,int y) retu
11、rn(xy)?x:y; double max(double x, double y) return(xy)?x:y; ,18,定义函数模板的一般形式为:,template 类型 函数名(形参表) 函数体 ,其中: template保留字; T 可以是其它字符,19,#include using namespace std; template T max(T x, T y) return(xy)? x: y; void main() int a(-15), b(23); double d1(50.678), d2(32.089); coutmax(a,b)endl; coutmax(d1,d2)
12、endl; ,使用函数模板:,调用时,根据实参的类型系统自动匹配。,20,6)函数参数的缺省(默认): 在定义函数时,可以为形参指定一个初值(称为缺省值)。调用函数时若对应的实参省略,则C+自动把缺省值作为参数值。 使用注意: 指定缺省值的形参必须从参数表的最右边开始连续进行,中间不能间断。 void try(int i, int j=3, int k=7); /合法 void try(int i, int j=3, int k); /非法 void try(int i, int j, int k=7); /合法 void try(int i=1, int j, int k=7); /非法,2
13、1,例题: 函数参数缺省 #include long power(int x, int n=2); /原型说明,有默认参数 void main( ) int k=5; cout1) p=p*x; n-; return(p); ,程序运行结果; 25 125 100 10000,22,例题: 函数参数缺省(与上相同) #include long power(int x, int n=2) p=x; if (n= =1) return (p); while (n1) p=p*x; n-; return(p); void main() int k=5; coutpower(k)endl; coutp
14、ower(k, 3)endl; coutpower(10)endl; coutpower(10, 4)endl; ,函数定义在前,23,7)变量的引用: 为变量起一个别名,因此定义引用时需要同时用变量名初始化。 引用的定义格式: int /引用可以被另一个变量再引用 引用的特点: 与原变量地址保持一致。,25,例题:引用的使用 #include void main( ) int a(0),b(5); /赋初值形式,等同于int a=0,b=5; int ,运行结果: a=0 ra=0 b=5 rb=5 a+b=10 a+b=10,26,#include void swap(int ,主函数第1
15、次输出: a=15 b=18 主函数第2次输出: a=18 b=15,程序执行结果:,例题:引用作参数:,27,注意:引用作函数参数与指针作参数的区别:,#include using namespace std; void swap(int ,#include using namespace std; void swap(int *px, int *py); void main() int a=15,b=18; swap( ,引用作参数,指针作参数,28,对引用的进一步说明: )不能建立void类型的引用 例如: void ,29,5)可以用const对引用加以限定,即不允许改变其值 例如:i
16、nt a; const int ,30,)内置函数(内联函数) 程序执行时,每调用一次函数,都要使参数进栈,调用返回时,参数要出栈,要付出时间和空间的代价,尤其对多次调用的函数。 内联函数使用关键字inline说明的函数,C+编译系统遇到有inline关键字说明的函数的函数时,就将该函数定义的内容直接嵌入到函数调用处,减少由于调用产生的额外开销。 使用内置函数主要是为提高程序执行时间,但增加目标程序的长度。,31,例题:内置函数 #include inline double ss1(double a, double b) return 3.1416*a*b; void main( ) doub
17、le x(5.0), y(4.0); double s; s=ss1(x,y); coutsendl; ,32,)作用域限定符: C+规定,在同一作用域内变量不能重名,但不同作用域的变量可以重名。重名时,若不另加说明,局部变量优先于全局变量。 若需要在局部区域访问重名的全局变量,可以使用作用域分辨符“:”。作用域分辨符只对全局变量起作用。 注意:仅限于访问与局部变量重名的全局变量。,33,例题: #include int data=123; void main( ) int data=456; int data=789; coutdataendl; cout:dataendl; cout:da
18、taendl; coutdataendl; ,运行结果: 789 123 123 456,34,表达式中类型转换: int a=5, b(6); double x(12.5), y; y=x+(double)a-b; / 同 y=x+double(a)-b; coutx“ “yendl;,35,10)字符串变量,+提供一种字符串类型(string),专用于处理字符串。 定义字符串变量: string s1,s2; /定义s1,s2为字符串变量 string str=“China”; /定义变量时初始化 s2=“Beijing”; /给字符串变量赋值 注意与字符数组的区别: char a10=“
19、aabbcc”; a=“xxyyzz”; /错误 string b=“ddeeff”; b=“xxyyzz”; /正确,36,字符串变量的使用:,1)字符串变量的输入输出 string s1,s2; cins1s2; couts1“ “s2endl; 2)字符串变量赋值 string str1,str2; str2=“zhang”; str1=str2; coutstr1“ “str2endl;,37,3)字符串相加(连接) string str1“li”,str2=“zhang ”; str1=str2+str1; cout = s1s2; if(s1s2) couts1; else cou
20、ts2;,说明:在+中一般使用字符串类型的变量进行运算, 而不在使用中的字符串函数的运算。,38,)字符串数组-使用string类型说明数组 例如: string as3; string name =“liu”,”zhang”, ”zhao”; as0=“AAAAA”; as1=“BBBBB”; 说明: 每个元素中可以存放一个字符串; 每个元素中存储的字符串的长度可以不同; 每个字符串元素只包含字符串中的字符,不包括0,注意:使用字符串类型在程序中加头文件: #include ,39,例题:对字符串进行排泄序(选择排序) #include #include using namespace st
21、d; void main( ) string a6,temp; int i,j,min; for(i=0; iai; for(i=0; iaj) min=j; temp=ai; ai=amin; amin=temp; for(i=0; i6; i+) coutai“ “; coutendl; ,40,11) 动态分配撤消内存的运算 中: malloc free C+中:new delete,分配内存空间,释放内存空间,new运算符的使用: 作用:随机申请存储单元,申请成功,得到存储单元的地址。 使用形式: 例如:int *p1, *p2,n; cinn; p1=new int; /动态申请1个
22、整型变量 p2=new intn; /动态申请n个整型变量,41,例题: 输入一系列整数,将其中的奇数和偶数 存入两个链表,分别输出这两个链表。,42,#include struct node int data; node *next; *p1,*q1,*px,*p2,*q2,*py; void crealist() int a; px=new(node); p1=q1=px; py=new(node); p2=q2=py; couta; while(a!=-1) if(a%2=1) /建奇数链表 p1=new(node); p1-data=a; q1-next=p1; q1=p1; else
23、 /建偶数链表 p2=new(node); p2-data=a; q2-next=p2; q2=p2; cina; p1-next=0; p2-next=0; ,43,void main() node *top; crealist(); coutnext; while(top!=0) coutdatanext; coutnext; while(top!=0) coutdatanext; coutendl; ,44,程序运行结果: 输入正整数(以-1为结束):2 4 5 7 12 13 35 60 45 70 99 -1 输出奇数链表: 5 7 13 35 45 99 输出偶数链表: 2 4 12 60 70,45,例题:生成10个10-100之间的随机数,并求各数的算术平方根。 #include #include #include /含产生随机数函数的头文件 #include /含存取时间函数的头文件 #include /含求平方根函数的头文件 void main( ) /设置种子,以产生每次执行均不相同的随机数 srand(unsigned)time(NULL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026新疆塔城市万橡林业科技发展有限公司招聘3人备考题库及1套完整答案详解
- 2026陕西西安灞桥薛氏医院招聘备考题库完整参考答案详解
- 2026江苏扬州工业职业技术学院人事代理及劳动合同制人员招聘7人备考题库含答案详解
- 2026黑龙江齐齐哈尔市建华区人力资源和社会保障局公益性岗位招聘4人备考题库及参考答案详解一套
- 2026陕西宝鸡市金台区东风路社区卫生服务中心招聘备考题库完整答案详解
- 2026云南黄金矿业集团股份有限公司第一次招聘工作人员13人备考题库及参考答案详解一套
- 2026河北驻马店市直公益性岗位招聘24人备考题库及答案详解一套
- 2026二季度重庆市九龙坡区事业单位遴选35人备考题库及完整答案详解一套
- 2025年中国大面巾箱市场调查研究报告
- 2026年第二季度重庆医药高等专科学校招聘6人备考题库完整答案详解
- 2025重庆市消防救援总队机关及直属单位政府专职消防员招录113人(公共基础知识)综合能力测试题附答案解析
- 2025四川成都东部新区面向全国选调事业单位工作人员40人笔试考试参考试题及答案解析
- DB62∕T 3296-2025 建筑保温与结构一体化系统技术标准
- 2025及未来5年中国镀银线市场调查、数据监测研究报告
- 新能源公司风电场电力企业应急能力建设评估自评报告
- 铸牢中华民族共同体课件
- DBJT15-140-2018 广东省市政基础设施工程施工安全管理标准
- 2025年贵阳市中考地理试卷(含答案解析)
- 混凝土胶凝材料化学降碳剂
- 防洪防汛隐患排查台账
- 医院财务岗笔试题及答案
评论
0/150
提交评论