第06章 函数与模块化程序设计基础.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:61 大小:262KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第06章 函数与模块化程序设计基础.ppt

第06章函数与模块化程序设计基础.ppt

预览

免费试读已结束,剩余 51 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章函数与模块化程序设计基础6.1概述3.功能模块4.函数:完成相对独立功能的程序程序实现:(2)求某月的天数。/*函数month_days调用函数leap判断year是否为闰年*/intmonth_days(intyear,intmonth){intds,d;switch(month){case1:case3:case5:case7:case8:case10:case12:d=31;break;case2:d=leap(year)?29:28;break;/*若为闰年,d赋值29,否则赋值28*/default:d=30;}returnd;}(3)求天数和。/*函数days调用函数month_days,求各月份对应的天数*/intdays(intyear,intmonth,intday){inti,ds=0;for(i=1;i<month;i++)ds=ds+month_days(year,i);ds=ds+day;returnds;}(4)主函数。voidmain(){intyear,month,day,t_day;printf("Inputyear-month-day:\n");scanf("%d-%d-%d",&year,&month,&day);/*函数scanf作为输入模块是系统定义的,主函数main可以直接调用它*/t_day=days(year,month,day);/*求天数和*/printf("%d-%d-%dis%dthdayoftheyear!\n",year,month,day,t_day);/*函数printf作为输出模块也是系统定义,主函数main可以直接调用*/}二.模块设计原则2.模块大小适中6.2函数的定义C语言库函数所用到的常量、外部变量、函数类型和参数说明,都在相应的头文件(扩展名为.h)中声明,这些文件通常存放在系统目录tc\include。如:二.用户自定义函数定义形式二:函数值类型名函数名(形式参数类型及参数说明){数据说明部分语句}3.函数由函数说明与函数体两部分构成。◆函数体结束在“}”括号处。(3)return语句的表示形式如下:return表达式;或return(表达式);例6-3:写出以下程序的运行结果。max()/*函数类型缺省,为int型,return语句缺省*/{}min()/*函数类型缺省,return语句缺省表达式*/{return;}main(){printf("%d,%d\n",max(),min());}程序运行结果为:-256,-256/*返回值不确定,TC2开发环境中返回值为0*/◆在具有多个函数的C程序中,主函数出现的位置并不重要。为阅读方便,可将主函数main放在最前面。为了避免过多的函数声明语句,习惯上将主函数放在所有函数之后。不论主函数放在什么位置,一旦启动该程序,总是从主函数开始执行,并且最终在主函数结束整个程序的执行。C语言中函数调用的三种形式:例6-4,函数语句调用与函数表达式调用。#include<stdio.h>voidmain(){printf("\nk1=%d",printf("\n%k2"));}程序运行结果为:k2k1=3voidmain()/*主函数中采用函数参数调用形式调用函数max2*/{intx,y,z,m;scanf("%d,%d,%d",&x,&y,&z);printf("max=%d\n",max2(max2(x,y),z));/*内层函数max2的值作为外层函数max2的实参,整个函数max2的值又作函数printf的的实参*/}2.函数声明例6-6:编程求两个整数的阶乘之和。二.形参与实参例6-7,求方程ax2+bx+c=0(a0)的实数根。if(d){x1=(-b+sqrt(dt))/(2*a);x2=(-b-sqrt(dt))/(2*a);printf("实根x1=%f,x2=%f\n",x1,x2);}elseprintf("无实数根!\n");}intdict(a,b,c)/*定义函数dict及形参说明*/floata,b,c;{floatd;d=b*b-4*a*c;/*可以用一个函数实现*/if(d>=0)return(1);elsereturn(0);}函数main有关实参与形参的几点说明:三.函数的嵌套调用例6-8,采用函数多重嵌套调用求方程ax2+bx+c=0(a0)的实数根。intdict(floata,floatb,floatc){intf;if(dt(a,b,c)>=0)f=1;elsef=0;re