华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第四讲 函数

目录页 Contents 函数基础 2 数据作用域 3 递归、函数重载 4 预编译与多文件结构 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 1 2 函数基础 数据作用域 3 递归、函数重载 4 预编译与多文件结构

函数基础 口函数的定义、声明与调用 口函数间的参数传递 口内联函数 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 1 函数基础 函数的定义、声明与调用 函数间的参数传递 内联函数

函数的定义 ▣ 函数是程序设计中,对功能的抽象,是C++的基本模块 ▣ C++程序是由函数构成的(一个或多个函数) ▣ C++程序必须有且只能有一个main函数 ▣ 函数的定义 类型说明符【 函数名(形式参数列表) 函数头 { 语句 函数体 类型说明符指明本函数的类型,即函数返回值的类型,若没有返回值,可用Void http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数的定义 4 函数是程序设计中,对功能的抽象,是 C++ 的基本模块 C++ 程序是由函数构成的(一个或多个函数) C++程序必须有且只能有一个 main 函数 类型说明符 函数名(形式参数列表) { 语句 } 函数头 函数体 函数的定义 类型说明符 指明本函数的类型,即函数返回值的类型,若没有返回值,可用 void

函数的参数:形参 形式参数列表(简称形参) 类型说明符 变量,类型说明符 变量 函数可以有多个或0个形参 ·有多个形参时,用逗号隔开,每个形参需单独指定数据类型 如果函数不带参数,则形参可以省略,但小括号不能省 ·形参只在函数内部有效 int my_max(int x,int y) /OK int my_.max(intx,y) /ERROR ▣ 函数的返回值 通过return语句给出,如:return x+y 若没有返回值,可以不写,也可以写不带表达式的return 5 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数的参数:形参 5 形式参数列表(简称形参) ► 函数可以有多个或 0 个形参 ► 有多个形参时,用逗号隔开,每个形参需单独指定数据类型 ► 如果函数不带参数,则形参可以省略,但小括号不能省 ► 形参只在函数内部有效 类型说明符 变量, 类型说明符 变量, . . . . . . int my_max(int x, int y) // OK int my_max(int x, y) // ERROR 函数的返回值 ► 通过 return 语句给出,如: return x+y ► 若没有返回值,可以不写,也可以写不带表达式的 return

函数的调用与声明 ▣ 函数的调用 函数名(实参列表): 被调函数可以出现在表达式中,此时必须要有返回值 ▣ 函数的声明 类型说明符函数名(形参列表): 函数声明基本原则: 被调函数在主调函数后定义, 函数调用前须先声明,可以在主调函数中声明, 须在调用前声明;被调函数 也可以在所有函数之外声明 在主调函数前定义,则主调函 ●有时也称为函数原型 数中可以直接调用 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数的调用与声明 6 函数的声明 类型说明符 函数名(形参列表); ► 函数调用前须先声明,可以在主调函数中声明, 也可以在所有函数之外声明 ► 有时也称为函数原型 函数的调用 ► 被调函数可以出现在表达式中,此时必须要有返回值 函数名(实参列表); 函数声明基本原则: 被调函数在主调函数后定义, 须在调用前声明; 被调函数 在主调函数前定义,则主调函 数中可以直接调用

函数举例 ex04_fun_01.cpp #include using namespace std; ex04_fun_02.cpp int my_max(int x,int y) 1函数定义,在主调函数前 { if (x y)return x; else return y; int main() { int m,n,p; cout m >n; p=my_max(m,n);/函数调用 cout <<"max("<<m <<","<<n <<")="<<p<<endl; return 0; 7 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数举例 7 #include using namespace std; int my_max(int x, int y) // 函数定义,在主调函数前 { if (x > y) return x; else return y; } int main() { int m, n, p; cout > m >> n; p = my_max(m,n); // 函数调用 cout << "max(" << m <<"," << n <<")=" << p << endl; return 0; } ex04_fun_01.cpp ex04_fun_02.cpp

函数调用过程 int main() int fun1() int fun3() fun3(); fun1(); fun2(); int fun2() C++程序总是从主函数开始 最后在主函数中结束 8 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数调用过程 8 int main() { ... fun1(); ... fun2(); ... } int fun1() { ... fun3(); ... } int fun2() { ... } int fun3() { ... } C++ 程序总是从主函数开始, 最后在主函数中结束

函数举例:二进制转十进制 例:编写函数,将一个二进制正整数转化为相应的十进制数 例如:(10101)2=1×24+0×23+1×22+0×21+1×20 分析:需解决两个问题 (1)如何提取每个数位上的数字; (2)如何确定2的次数。 提示:从右往左计算 ex04_bin2dec.cpp 思考 如何提高计算效率:降低计算2k的运算次数 思考 如何计算1111111111111111对应的十进制数?(提示:字符数组) 9 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数举例:二进制转十进制 9 例:编写函数,将一个二进制正整数转化为相应的十进制数 例如:(10101)2 = 1×24 + 0×23 + 1×22 + 0×21 + 1×20 分析:需解决两个问题 (1)如何提取每个数位上的数字; (2)如何确定 2 的次数。 提示:从右往左计算 ex04_bin2dec.cpp 思考 如何提高计算效率:降低计算 𝟐𝟐𝒌𝒌 的运算次数 思考 如何计算 1111 1111 1111 1111 对应的十进制数?(提示:字符数组)

函数举例:计算正弦函数值 例:编写函数,利用Taylor展开计算sin(π/2)的近似值 (直到级数某项的绝对值小于1015为止) sin(x)=x 2k+1 1!3+57:+…=) (2k+1)I 分析:注意大数越界和误差累积,简化通项计算方法。 ex04_my_sin.cpp 思考 用上面的方法计算sin (). 结果如何? 10 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数举例:计算正弦函数值 10 例:编写函数,利用 Taylor 展开计算 sin(𝜋𝜋/2) 的近似值 分析:注意大数越界和误差累积,简化通项计算方法。 ex04_my_sin.cpp 用上面的方法计算 sin 41𝜋𝜋 2 思考 ,结果如何? (直到级数某项的绝对值小于 10-15 为止) 3 5 7 2 1 0 sin( ) ( 1) 1! 3! 5! 7! (2 1)! k k k xx x x x x k ∞ + = =− + − += − + ∑

函数举例:回文数 例:找出11~999之间的数m,满足m、m2和m3均为回文数 分析: (1)回文数:各位数字左右对称的整数,如11,121,1331 (2)判别方法:利用除以10取余的方法,从最低位开始,依次取出该数的各位数字。 按反序重新构成新的数,比较与原数是否相等,若相等,则该数为回文数 ex04 huiwen.cpp 11 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数举例:回文数 11 例:找出 11~999 之间的数 m,满足 m、m2 和 m3 均为回文数 分析: (1)回文数:各位数字左右对称的整数,如 11,121,1331 (2)判别方法:利用除以10取余的方法,从最低位开始,依次取出该数的各位数字。 按反序重新构成新的数,比较与原数是否相等,若相等,则该数为回文数 ex04_huiwen.cpp
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分的近似计算(数值积分).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分数值计算.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第三讲 选择与循环.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第二讲 C++编程基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第一讲 计算机基础知识.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)IEEE浮点运算标准.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)课程介绍(授课教师:潘建瑜).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)C++ 程序设计简明讲义(共十六讲).pdf
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)08 互联网营销方案策划.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)07 互联网直播营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)06 互联网视频营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)05 互联网社交媒体营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)04 互联网电子邮件营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)03 互联网搜索引擎营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)02 互联网营销市场调研.pptx
- 《互联网营销理论与工具运用》课程教学资源(PPT课件)01 走进互联网营销.pptx
- 《互联网营销理论与工具运用》课程教学资源(讲义)课程标准.docx
- 《互联网营销理论与工具运用》课程教学资源(习题)题库3.pdf
- 《互联网营销理论与工具运用》课程教学资源(习题)题库2.pdf
- 《互联网营销理论与工具运用》课程教学资源(习题)题库1.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(一)数值数组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(二)字符数组(字符串).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第六讲 指针.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)矩阵乘积快速算法——Strassen 算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)Gauss消去法求解线性方程组.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Fast and stable matrix multiplication.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)内存分配——栈和堆.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Pointers and Memory.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第七讲 输入输出与(C 语言)文件操作.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第八讲 排序算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第九讲 类与对象(I)面向对象基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十讲 类与对象(II)面向对象进阶.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十一讲 类与对象(III)面向对象提高.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ vector使用方法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十二讲 运算符重载与自动类型转换.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十三讲 继承与派生.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十四讲 多态.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十五讲 文件流与输出输入重载.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十六讲 标准模板库(Standard Template Library,STL).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ Reference Card(C++ RC by Greg Book,2002).pdf