版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C+的数据类型基本类型:整型、浮点型、枚举型、地址类型:引用、指针结构化类型:数组、结构体、联合体、类void类型 基本概念标示符常量变量运算符和表达式#includeint Div(int x,int y);void main() try cout5/2=Div(5,2)endl; cout8/0=Div(8,0)endl; cout7/1=Div(7,1)endl; catch(int) coutexcept of deviding zero.n; coutthat is ok.n;int Div(int x,int y) if(y=0) throw y;return x/y;程序运行结
2、果如下:程序运行结果如下:5/2=25/2=2except of deviding zero.except of deviding zero.that is ok.that is ok.。函数是面向对象程序设计中,对功能的抽象函数定义的语法形式返回值类型标识符返回值类型标识符指的是函数体语句执行完指的是函数体语句执行完成后,函数返回的值的类型,如成后,函数返回的值的类型,如int,float等,等,若函数无返回值,则用空类型若函数无返回值,则用空类型void来定义函来定义函数的返回值。缺省情况为数的返回值。缺省情况为int型。型。函数的定义函数名由任何合法的标识符构成。建议将函数名的命名与函数
3、内容有一定关系。形式参数表 name1, name2, ., namen形参说明表是一系列用逗号分开的每个形参变量说明。如:int x, int y, int z这表示形参变量有三个:x, y, z。它们的类型都是int型。函数的返回值 由 return 语句给出,例如:return 0; 无返回值的函数(void类型),不必写return语句。函数返回语句的形式有以下两种: 函数无返回值的情况:return; 函数有返回值的情况:return(表达式的值);在第种情况下要注意“表达式的值”的类型必须与函数返回值的类型相一致。函数语句体是放在一对花括号 中,由局部数据类型描述和功能实现两部分组
4、成。一个程序只能有一个(一个程序只能有一个(mainmain)主函数)主函数 ,主函数可以声明为有参函数,也可以声主函数可以声明为有参函数,也可以声明为无参函数;可以声明为有返回值函明为无参函数;可以声明为有返回值函数,也可以声明为无返回值函数。数,也可以声明为无返回值函数。函数的调用调用前先声明函数原型:在调用函数中,或程序文件中所有函数之外,按如下形式说明:类型标识符 被调用函数名 (含类型说明的形参表);使用位置:函数调用之前使用情况:函数定义出现在函数调用之后,或在其它文件调用形式 函数名(实参列表)实参个数应该与形参个数相同实参表达式类型应该与形参对应表达式类型相同调用时实参表达式的
5、值被传递给函数,为对应的形参变量所接受函数调用两种情形1. 作为表达式的函数调用例:s=min(5,7)*5;这时函数本身是一个表达式,或是某个表达式的一个子表达式,其值参与表达式求值 无返回值的函数不能被作为表达式加以调用2. 作为语句的函数调用 通过函数的副作用发挥其作用 若调用的是有返回值的函数,其返回值被舍弃 函数的作用通过其副作用被实现,没有副作用的函数作为语句调用无意义 例:min(5,7);/无意义main()调fun()结束fun()返回保存:返回地址当前现场恢复:主调程序现场返回地址函数1调用了函数2,函数2再调用函数3就形成函数的嵌套调用。main调fun1()结束fun1
6、()调fun2()返回fun2()返回嵌套调用嵌套调用 传递指针实际上仍属于传值的范畴:形参指针是实参指针的拷贝。不过,这两个指针指向了同一个单元。因此,通过这两个指针的任何一个都可以间接地改变实参的值。#includeusing namespace std;void Swap(int& a, int& b);int main() int x(5), y(10);coutx=x y=yendl;Swap(x,y);coutx=x y=yendl;return 0;void Swap(int& a, int& b) int t;t=a;a=b;b=t;运行结果运行结果:x=5 y=10 x=10
7、 y=5t=a;x5t5x 的别名axy510y 的别名x 的别名aby 的别名x 的别名abx10y10a=bb=t;y5t5y 的地址bxy105Swap(x,y);使用指针和引用参数具有实参被更改的潜在“危险”。为了避免这种危险,可以给形参加上const约束,这是形参/实参成为只读参数,从而避免了被更改的问题。例如:26int add(int x=5,int y=6);void main(void) add(); /调用在实现前调用在实现前int add(int x,int y) return x+y; int add(int x=5,int y=6) return x+y; void
8、main(void) add(); /调用在实现后调用在实现后4.3 函数重载int add(int x, int y);int add(int a, int b);编译器不以形参名形参名来区分int add(int x, int y);void add(int x, int y);编译器不以返回值返回值来区分函数重载举例编写三个名为编写三个名为add的重载函数,分别实现两整的重载函数,分别实现两整数相加、两实数相加和两个复数相加的功能。数相加、两实数相加和两个复数相加的功能。/3_16.cpp#includeusing namespace std;struct complexdouble r
9、eal;double imaginary;void main(void)int m, n;double x, y;complex c1, c2, c3;int add(int m, int n);double add(double x, double y);complex add(complex c1, complex c2);coutmn;coutinteger m+n=add(m,n)endl;coutxy;coutreal number x+y= add(x,y)endl;coutc1.realc1.imaginary;coutc2.realc2.imaginary;c3=add(c1,
10、c2);coutcomplex number ( c1.real , c1.imaginary )+(c2.real, c2.imaginary)=(c3.real, c3.imaginary)n;运行结果:Enter two integer: 3 5integer 3+5=8Enter two real number: 2.3 5.8real number 2.3+5.8= 8.1Enter the first complex number: 12.3 45.6Enter the second complex number: 56.7 67.8complex number (12.3,45.
11、6)+(56.7,67.8)= (69,113.4)直接将参数表达式放入宏体中例:#define abs(v) (v)0?-(v):(v)当调用为abs(+a)时,将不能正确工作内联函数定义:inline long abs(long num)return (num0?-num:num);声明时使用关键字 inline。编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销。注意: 内 联 函 数 体 内 不 能 有 循 环 语 句 和switch语句。 内联函数的定义必须出现在内联函数第一次被调用之前。 对内联函数不能进行异常接口声明。#includeusing namespace s
12、td;inline double CalArea(double radius) return 3.14*radius*radius;int main()double r(3.0);double area;area=CalArea(r);coutareaendl;return 0;运行结果:Hello!Welcome to c+!声明区 #include:函数声明函数声明定义全局变量定义全局变量主程序区类型类型 main(参数参数行行) 程序主体;程序主体; 函数定义区函数定义函数定义 函数主体;函数主体; 3函数定义区函数定义区 程序中除了程序中除了mainmain函数之外,还可以包含其它的函
13、数之外,还可以包含其它的函数,每个函数是由函数说明和函数体两部分构函数,每个函数是由函数说明和函数体两部分构成的。如图所示:成的。如图所示:函数定义区函数说明int max(int a,int b)函数体int c;c=a+b;return(c);在在C+中,将数据从一个对象到另一个对象的中,将数据从一个对象到另一个对象的流动抽象为流动抽象为“流流”。l流在使用前要被建立,使用后要被删除;l从流中获取数据的操作称为提取操作;l向流中添加数据的操作称为插入操作;l数据的输入与输出是通过流来实现的;lcin是预定义的用来处理标准输入的流类对象-键盘;lcout是预定义的用来处理标准输出的流类对象屏
14、幕;“”是预定义的提取符,作用在流类对象cint上,用来实现键盘输入。 格式: cin变量变量. 在输入语句中,可以串联多个提取运算符,用于实现给多个变量输入数据,变量的类型可以不一致。例如: int a,b; cinab;要求从键盘上输入两个int型数,两数之间以空格分隔。若输入 5 6这时,变量a得到的值为5,变量b得到的值为6。在数据输入输出时,在数据输入输出时,cincin和和coutcout能对数据自动按正能对数据自动按正确的格式进行处理,除此之外,还可按特殊的格确的格式进行处理,除此之外,还可按特殊的格式加以处理式加以处理 。这些操纵符可以直接嵌入到输入输出语句中实现这些操纵符可以
15、直接嵌入到输入输出语句中实现I/OI/O控制。控制。使用该操纵符,必须在源程序的开头包含使用该操纵符,必须在源程序的开头包含iomainipiomainip头文件头文件。操纵符名 含义dec 数值数据采用十进制hex 数值数据采用十六进制oct 数值数据采用八进制ws 提取空白符endl 插入换行符,并刷新流ends 插入空白符setprecision(int) 设置浮点数的小数点位数(包括小数点)setw(int) 设置域宽coutsetw(5) setprecision(3) 3.1415endl;编写一个求x的n次方的函数#include using namespace std;doub
16、le power(double x, int n);/函数声明void main(void)cout “5 to the power 2 is ” power(5,2) endl;/函数使用double power(double x, int n)/函数定义double val = 1.0;while (n-)val = val*x;return(val);运行结果:运行结果:5 to the power 2 is 25#include using namespace std;void main(void) int a,b; int fun1(int x,int y); cinab; cout
17、a、b的平方和: fun1(a,b)endl;int fun1(int x,int y) /求平方和 int fun2(int m); return (fun2(x)+fun2(y);int fun2(int m) /求平方 return (m*m);运行结果:3 4a、b的平方和:25分析:计算n!的公式如下:这是一个递归形式的公式,应该用递归函数实现。)0()!1()0(1!nnnnn源程序:#include using namespace std;long fac(int n) long f; if (n0) coutn0,data error!endl; else if (n= =0) f=1; else f=fac(n-1)*n; return(f);int main() long fac(int n); int n; long y; coutn; y=fac(n); coutn!=yendl;运行结果:Enter a positive integer:88!=40320#in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《工贸企业设备检维修安全作业管理制度》
- 航天长期验资协议
- 舞台灯光租赁服务行业跨境出海战略分析报告
- 道岔枕木企业ESG实践与创新战略分析报告
- 2025-2030年麻类批发行业直播电商战略分析研究报告
- 2025-2030年通信人才服务行业深度调研及发展战略咨询报告
- 2026年高级经济师之工商管理必刷题库加答案详解
- 云南省楚雄州2026-2027学年数学五年级第二学期期末检测模拟试题含答案含解析
- 2026年丽水市龙泉市三年级数学第一学期期末检测试题含解析
- 2026年幼儿园大班数数 比多少课件
- 2025北师大二附高一数学分班考试真题含答案
- 2026海南热带海洋学院招聘员额制辅导员8人参考题库附答案详解【培优B卷】
- 2026年湖北省高考地理真题含答案
- 2026年上海市中考数学试卷真题及答案解析
- 2026年文物保护工程从业资格考试(责任工程师近现代重要史迹及代表性建筑)经典试题及答案
- 核电厂换料大修的核安全风险管理培训
- 【低空经济】低空综合智慧管理平台设计方案
- 校长在家长会上的讲话:家校共育的真谛就藏在这五个词里
- 2026年及未来5年市场数据中国噪声污染治理行业发展监测及市场发展潜力预测报告
- 雨课堂学堂在线学堂云《人工智能安全与伦理(北京航空航天)》单元测试考核答案
- 2026年旅游品牌会员等级权益体系设计
评论
0/150
提交评论