c语言编程-函数(常见例题)

上传人:第*** 文档编号:58908818 上传时间:2018-11-02 格式:PPT 页数:63 大小:596.01KB
返回 下载 相关 举报
c语言编程-函数(常见例题)_第1页
第1页 / 共63页
c语言编程-函数(常见例题)_第2页
第2页 / 共63页
c语言编程-函数(常见例题)_第3页
第3页 / 共63页
c语言编程-函数(常见例题)_第4页
第4页 / 共63页
c语言编程-函数(常见例题)_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《c语言编程-函数(常见例题)》由会员分享,可在线阅读,更多相关《c语言编程-函数(常见例题)(63页珍藏版)》请在金锄头文库上搜索。

1、6.1 求周长与面积 6.2 验证歌德巴赫猜想 6.3 求最大公约数 6.4 Fibonacci数列 6.5 编译预处理 6.6 综合应用实例,第6章 函数,6.1 求周长与面积,6.1.1 程序解析 例6-1 输入圆的半径,通过函数计算并输出圆的周长及面积。,程序代码 #include const float PI=3.14159 void main() float s,l r;printf(“请输入圆的半径: ”);scanf(“%f”, ,float perimeter(float r) return (2*PI*r); float area(float r) float s;s=PI*

2、r*r;return s; ,函数:功能独立,反复使用的代码段 (1)一个源程序文件由一个或多个函数构成。 (2)程序是由一个或多个源程序文件组成,以源程序文件为单位进行编译。 (3)C程序的执行从main函数开始,在main函数中结束。 (4)函数不能嵌套定义,可相互调用,但不能调用main函数。,6.1 求周长与面积,6.1.2 程序的结构,1. 从函数定义的角度 (1)标准函数,即库函数。 (2)用户自定义函数。 2. 从函数参数的角度 (1)无参函数。函数定义、函数说明、函数调用均不带参数。 (2)有参函数。函数定义、函数说明时有形式参数。函数调用时有实际参数(简称实参)。 3. 函数

3、分类的其他角度(1) 返回值:有返回值和无返回值函数;(2) 返回值类型:整型、实型、字符型和指针型函数等。,6.1.3 函数的分类,6.1.4 函数的定义,1.无参函数的定义 类型说明符 函数名() 声明部分语句 执行部分语句 ,类型说明符和函数名( )称为函数头。类型是指该函数返回值的类型,系统隐含为int型。函数名是用户定义的标识符,函数名后面必须有一对括号( )。花括号 中的内容称为函数体,由声明部分和执行部分语句序列组成。,函数的运算结果通过return语句返回,格式为: return (表达式);或 return 表达式;,【例6-2】编写求两个整数的较大值函数max()。,voi

4、d main( ) max( ); ,#include void max() int a, b, c;scanf(“%d,%d“, ,输入、输出和计算操作均在子函数中完成,无参函数一般不需要返回值,应将函数值的类型定义为void,即空类型,以确定函数返回时不带回任何值。,【例6-2】包含无参但有返回值函数的C程序例。,int main( ) int m;m=max1( ); printf(“max=%dn“, m);return 0; ,#include int max1( ) int a, b, c;scanf(“%d,%d“, ,输入和计算操作在子函数中完成;输出在主函数中,类型 函数名(

5、类型 形参1,类型 形参2,) 声明部分语句;执行部分语句;,2.有参函数,有参函数定义在函数头部多了形式参数和形式参数类型说明的内容。形参可以是任何类型的变量,参数间用逗号分隔。在函数调用时,主调函数将实际参数值赋予这些形参变量。,【例6-2】包含有参有返回值函数的C程序示例。,void main( ) int a, b, m;scanf(“%d,%d“, ,#include int max2(int x, int y) int z;z=xy?x:y;return(z); ,计算操作在子函数中完成;输入输出在主函数中,【例6-2】有参无返回值函数的C程序示例。,void main( ) in

6、t a, b;scanf(“%d,%d“, ,#include void max3(int x, int y) int z;z=xy?x:y;printf(“max=%dn“, z); ,计算和输出操作在子函数中完成;输入在主函数中,#include void pyramid(int n) int i,j;for(i=1; i=n; i+) for(j=1;j=n-i;j+) printf(“ ”);for(j=1;jy?x:y;return(z); ,6.1.5 函数设计的基本原则,1、函数的规模要小,尽量控制在50行代码以内。 2、函数的功能要单一,不要让它身兼数职。 3、每个函数只有一个

7、入口和出口。 4、在函数入口处清楚地定义函数的行为。 5、在函数的入口处对参数的有效性进行检查。 6、当函数需要返回值时,应确保函数中的所有控制分支都有返回值;函数无返回值时需在void中声明。,6.2 验证哥德巴赫猜想,6.2.1 程序解析 例6-4 验证哥德巴赫猜想,输入一个大于6的偶数,要求验证其等于两个素数之和。,分析: 需要测试大于6的偶数s是否存在a和s-a均为素数,可以考虑定义一个判断素数的子函数。(2=a=s/2) 子函数的形参为整型变量n,若为素数,则返回1,否则返回0。,#include int prime(int n) int i,j;if(n=1) return 0;f

8、or(i=1;ib) c=1; else if(a=b) c=0; return(c); ,return(表达式);或 return 表达式; 功能:1、计算表达式的值,并作为函数值返回给主调函数。2、一个函数中允许有多个return语句,但每次调用只执 行一个return语句,只能返回一个函数值。,6.2.3 函数的返回值,说明: (1) return语句以没有表达式,如:return; (2) 如果不需要返回函数值,被调函数可以没有return语句,程序执行到函数体的右括号“”时自动返回。 (3) 函数返回值的类型和函数定义的类型应保持一致。如果不一致,以函数定义类型为准。 (4) 如果函

9、数的返回值是整型,则在函数定义时可省略类型说明。 (5) 为了明确表示“不带回值”,可将函数定义为void“空类型” 。,6.2.4 函数的声明,函数调用需要以下条件: (1)该函数必须存在;(2)自定义函数调用时一般要声明;(3)调用库函数时,要#include命令,声明形式 (1) 类型说明符 函数名(类型 形参1,类型 形参2,);形参变量名可省,如:int max( int , int ); (2) 类型说明符 函数名( );,省略对被调函数的声明:(1)函数定义在前,调用在后;(2)在函数的外部已声明;(3)整型函数,在.c中可以不声明,但.cpp中要声明。,#include mai

10、n() int a,b;float aver(int x, int y); float ave;scanf(“%d,%d“, ,【例6-6】对被调函数的声明,6.3.1 程序解析 例6-7 求两个自然数的 最大公约数和最小公倍数。,分析: 可定义两子函数用于求最大公约数和最小公倍数:gcd(a,b)和lcm(a,b) 求最大公约数有三种算法:穷举法,欧几里得算法和递归算法。,6.3 求最大公约数,#include void main( ) int gcd(int a,int b),lcm(int,int);int x,y,g,l;printf(“please input two integer

11、s: “);scanf(“%d%d“, ,int gcd(int x,int y) /穷举法 int i;if(x=1;i-) if(x%i=0 ,嵌套调用gcd()函数,int gcd(int x,int y) /欧几里得法 int r;while(y!=0) r=x%y; x=y; y=r; return x; ,int gcd(int x,int y) /递归法 if(x%y=0) return y;else return (gcd(y,x%y); ,6.3.2 函数的嵌套调用 C语言中函数的定义都是相互平行、相互独立。函数不能嵌套定义,但可以嵌套调用。【例6-8】分析下面程序,其功能是通过函数计算s=1!2!3!10!。,double sum(int m) double s=0, mul(); int i;for(i=1;i=m;i+) s=s + mul(i); return s; ,double mul(int n) double t=1, j;for ( j=1;j=n; j+) t=t*j;return t; ,#include main() double s , sum ();s=sum (10); printf( “s=%.0fn“,s); ,定义一个求阶乘的函数mul实现1*2*n, 定义一个求和函数sum实现a1a2am。,s=1!2!3!10!,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号