第6章 函数与模块化程序设计基础优秀课件.ppt
《第6章 函数与模块化程序设计基础优秀课件.ppt》由会员分享,可在线阅读,更多相关《第6章 函数与模块化程序设计基础优秀课件.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 函数与模块化函数与模块化程序设计基础程序设计基础1第1页,本讲稿共45页6.1 概述概述6.1.1 模块与函数模块与函数1.功能模块功能模块求解较小问题的算法和程序称作求解较小问题的算法和程序称作“功能模块功能模块”,各功能模块可以先单独设计,然后将求解各功能模块可以先单独设计,然后将求解所有子问题的模块组合成求解原问题的程序。所有子问题的模块组合成求解原问题的程序。“自顶向下自顶向下”的模块化程序设计方法:的模块化程序设计方法:将一个大问题分解成多个解决小问题的模块将一个大问题分解成多个解决小问题的模块的设计思想。的设计思想。2第2页,本讲稿共45页2.由功能模块组成程序的结构图
2、由功能模块组成程序的结构图:主控模块模块1_1模块1_n模块2_1模块2_n模块n_1模块n_n模块1模块2模块n3.函数:完成相对独立功能的程序3第3页,本讲稿共45页【例【例6-1】输入年月日,计算出该日为该年的第几天。输入年月日,计算出该日为该年的第几天。主控模块判断闰年求某月的天数输 出输 入求总天数图6-2 程序结构图4第4页,本讲稿共45页程序实现程序实现:(1)判断闰年。)判断闰年。int leap(int year)int lp;lp=(year%4=0&year%100!=0|year%400=0)?1:0;return lp;5第5页,本讲稿共45页(2 2)求某月的天数。
3、)求某月的天数。int month_days(int year,int month)int month_days(int year,int month)int ds,d;int ds,d;switch(month)switch(month)case 1:case 1:case 3:case 3:case 5:case 5:case 7:case 7:case 8:case 8:case 10:case 10:case 12:d=31;break;case 12:d=31;break;case 2:d=leap(year)?29:28;break;case 2:d=leap(year)?29:2
4、8;break;default:d=30;default:d=30;return d;return d;6第6页,本讲稿共45页(3 3)求天数和。)求天数和。int days(int year,int month,int day)int i,ds=0;for(i=1;imonth;i+)ds=ds+month_days(year,i);ds=ds+day;return ds;7第7页,本讲稿共45页4)在主函数中分别调用三个函数。在主函数中分别调用三个函数。void main()int year,month,day,t_day;printf(Input year-month-day:n);s
5、canf(%d-%d-%d,&year,&month,&day);t_day=days(year,month,day);printf(%d-%d-%d is%dth day of the year!n,year,month,day,t_day);注意注意:在完整的程序中在完整的程序中,前三个函数应放在前三个函数应放在main()函数之前。函数之前。8第8页,本讲稿共45页6.1.2 模块设计三个原则模块设计三个原则模块独立。模块独立。功能独立的子功能功能独立的子功能模块之间的关系简单模块之间的关系简单使用独立变量使用独立变量模块规模适当模块规模适当分解模块要注意层次分解模块要注意层次对问题抽象
6、化对问题抽象化设计时细化设计时细化9第9页,本讲稿共45页6.2 函数定义与使用函数定义与使用一、标准库函数一、标准库函数定义在不同的头文件中定义在不同的头文件中用户使用时,必须用用户使用时,必须用#include“头文件头文件”把相应的头文把相应的头文件包含到程序中来。件包含到程序中来。#include /*包含包含math.h头文件头文件 */#include /*包含包含 stdio.h 头文件头文件*/main()double a,b;scanf(“%f“,&a);/*调用输入函数,输入变量调用输入函数,输入变量a的值的值*/b=sin(a);/*调用调用sin函数,求函数,求sin(
7、a)的值的值*/printf(“%6.4f”,b);/*调用输出函数,输出变量调用输出函数,输出变量b的值的值*/10第10页,本讲稿共45页二、用户自定义函数二、用户自定义函数1.函数类型函数类型无参函数无参函数函数的定义无参数说明函数的定义无参数说明 有参函数有参函数 定义的参数有一个或一个以上的参数定义的参数有一个或一个以上的参数 空函数空函数当定义的函数既无参数也无执行语句。当定义的函数既无参数也无执行语句。空函数被调用时,什么也不做立即返回其调用函数。空函数被调用时,什么也不做立即返回其调用函数。11第11页,本讲稿共45页2.函数定义函数定义方式方式1 函数返回值类型名函数返回值类
8、型名 函数名函数名(参数列表参数列表)参数类型说明参数类型说明 局部变量说明局部变量说明;语句序列语句序列;方式方式2 函数返回值类型名函数返回值类型名 函数名函数名(参数类型说明及参数列表参数类型说明及参数列表)局部变量说明局部变量说明;语句序列语句序列;如如:int max(a,b)int a,b;如如:int max(int a,int b)12第12页,本讲稿共45页【例【例6-3】定义符号函数】定义符号函数sign。int sign(x)/*函数返回值类型未说明,默认为函数返回值类型未说明,默认为int,建议给出函数类型说明,建议给出函数类型说明*/int x;/*形式参数说明形式参
9、数说明*/int y;/*函数体局部变量函数体局部变量*/y=x0?1:(x=0?0:-1);return y;/*返回函数值返回函数值*/注意注意:C语言函数分为两大部分语言函数分为两大部分:函数的说明部分函数的说明部分函数体部分。函数体部分。13第13页,本讲稿共45页函数各部分作用函数各部分作用1)函数的说明部分函数的说明部分 函数说明部分说明函数的类型函数说明部分说明函数的类型,函数名函数名,参数表及参参数表及参数类型。数类型。(1)函数的类型说明函数的类型说明函数的类型即函数的返回值类型。若函数不提供返回值,函数的类型即函数的返回值类型。若函数不提供返回值,则可定义其类型为则可定义其
10、类型为:void。例如例如:void putdata(int a)(2)函数名函数名 函数名又称函数标识符。命名遵循函数名又称函数标识符。命名遵循C语语言标识符的语语言标识符的规定;函数名要反映函数完成的功能。规定;函数名要反映函数完成的功能。14第14页,本讲稿共45页(3)参数表参数表参数表写在函数名后的参数表写在函数名后的()内,由一个或多个变量标识内,由一个或多个变量标识符及类型标识符组成。符及类型标识符组成。参数表中的变量称为形式参数参数表中的变量称为形式参数,简称形参。简称形参。若函数没有形参,则称为无参函数,其后若函数没有形参,则称为无参函数,其后“()”不能省略。不能省略。参数
11、必须指定类型。形参的类型说明有两种:参数必须指定类型。形参的类型说明有两种:方法方法1:int max(a,b)int a,b;方法方法2:int max(int a,int b)省略函数类型名时,省略函数类型名时,C语言默认其为语言默认其为int型。型。15第15页,本讲稿共45页2)函数体函数体函数体包括变量定义和执行语句序列。函数所完函数体包括变量定义和执行语句序列。函数所完成的工作由函数体中一段程序实现。成的工作由函数体中一段程序实现。函数的返回值用返回语句函数的返回值用返回语句return返回,形式返回,形式:return(表达式表达式);或或 return 表达式;表达式;如果函数
12、的类型与如果函数的类型与return语句的表达式的类语句的表达式的类型不一致时型不一致时,则以函数的类型为准。返回时则以函数的类型为准。返回时自动进行数据转换。自动进行数据转换。(见下页例题见下页例题)16第16页,本讲稿共45页例例6.3 定义函数定义函数power(x,n),求求x的的n次方。次方。函数定义如下函数定义如下:float power(float x,int n)int i;float t=1;for(i=1;ib)?a:b;y=yc?y:c;printf(max=%dn,y);void main()int x,y,z,m;scanf(%d,%d,%d,&x,&y,&z);ma
13、x(x,y,z);/*采用函数语句形式调用函数采用函数语句形式调用函数max*/19第19页,本讲稿共45页函数调用形式函数调用形式int max(int a,int b)int y;y=(ab)?a:b;return y;void main()int x,y,z,m;scanf(%d,%d,%d,&x,&y,&z);m=max(x,y);m=max(m,z);printf(“max=%dn”,m);/*表达式调用形式表达式调用形式*/m=max(x,y);printf(max=%dn,max(m,z);/*函数参数调用形式函数参数调用形式*/20第20页,本讲稿共45页2.函数声明函数声明函
14、数定义在函数定义在main()之后,需要进行函数说明。之后,需要进行函数说明。类型名类型名 函数名函数名(类型类型1 变量变量1,类型类型2 变量变量2,类型类型n 变量变量n);说明:说明:函数声明应与该函数定义的函数类型与名称、形参的个函数声明应与该函数定义的函数类型与名称、形参的个数、类型、次序相一致。数、类型、次序相一致。函数声明中的形参名可省略,其形式为函数声明中的形参名可省略,其形式为:类型名类型名 函数名(类型函数名(类型1,类型,类型2,类型,类型n););类型名类型名 函数名函数名();当函数定义在主调函数之前,即先定义当函数定义在主调函数之前,即先定义,后调用。则调用后调用
15、。则调用时函数声明可以省略。时函数声明可以省略。21第21页,本讲稿共45页例例6.4 编写计算编写计算x的的n次乘方的程序。次乘方的程序。#include stdio.h”main()float x,y;int n;float power(float x,int n);scanf(%f,%d,&x,&n);y=power(x,n);printf(“%8.2f”,y);float power(float x,int n)int i;float t=1;for(i=1;iy)t=x;else t=y;return t;24第24页,本讲稿共45页1)形参形参y之间值的传递如图之间值的传递如图4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 函数与模块化程序设计基础优秀课件 函数 模块化 程序设计 基础 优秀 课件
限制150内