C程序设计(第四版)(谭浩强编)教程-第7章 用函数实现模块化程序设计.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:72 大小:328KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C程序设计(第四版)(谭浩强编)教程-第7章 用函数实现模块化程序设计.ppt

C程序设计(第四版)(谭浩强编)教程-第7章用函数实现模块化程序设计.ppt

预览

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

15 金币

下载此文档

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

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

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

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

C程序设计第7章函数d函数调用程序实例1函数概述(Function)函数的分类(1)函数的分类(2)7.2函数定义的一般形式函数定义形式的说明函数定义举例7.3函数的参数和函数的值#include<stdio.h>intmax(intx,inty)/*函数定义*/{intz;z=(x>y)?x:y;return(z);}main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);/*函数调用*/printf("max=%d\n",c);}参数传递参数传递举例参数传递举例return语句return语句执行图示:函数的返回值(ReturnValue)7.4函数的调用函数调用的方式:函数原型(Prototype)函数的声明(Declaration)intmax(intx,inty);/*函数声明*/函数声明举例(2)函数声明举例(3)7.5函数的嵌套调用函数嵌套调用的例子7.6函数的递归调用【例】递推关系例:用递归方法求n!。n!=1n=0,1n*(n-1)!n>16!--5!--4!--3!--2!--1!=1(已知条件)1!*2--2!*3--3!*4--4!*5--5!*6=720floatfac(intn){floatf;if(n==0||n==1)f=1;elsef=fac(n-1)*n;return(f);}main(){intn;floaty;scanf(“%d”,&n);y=fac(n);printf(“%d!=%10.2f\n”,n,y);}【例5】求最大公约数(递归)例:Hanoi塔(汉诺塔、河内塔、梵塔)move(intn,intx,inty,intz){if(n==1)printf("%c-->%c\n",x,z);else{move(n-1,x,z,y);printf("%c-->%c\n",x,z);move(n-1,y,x,z);}}main(){inth;printf("\ninputnumber:\n");scanf("%d",&h);printf("thesteptomoving%2ddiskes:\n",h);move(h,'a','b','c');}7.7数组与函数参数intbetter(floatave1,floatave2){if(ave1>ave2)return(1);elsereturn(-1);}main(){inti,k=0;floata[8]={65,78,67,90,84,63,58,76},b[8]={62,79,65,88,80,65,60,74};for(i=0;i<8;i++)if(better(a[i],b[i])>0)k=k+1;printf("%d\n",k);}数组名作为函数的实参例多维数组名作函数参数例:求5x5数组鞍点7.8局部变量与全局变量局部变量(LocalVariables)局部变量举例(1)局部变量举例(2)全局变量(GlobalVariables)全局变量举例局部变量和全局变量【例】7.9变量的存储类型变量的存储类型自动(auto)变量寄存器(register)变量静态(static)局部变量静态局部变量举例用extern声明外部变量非静态外部变量举例(1)非静态外部变量举例(2)用static声明外部变量变量的声明和定义从作用域角度分类从生存期角度分类从存放位置角度分类变量作用域和生存期小结内部函数与外部函数外部函数各种变量和关键字用法总结结束实验中的问题实验中的问题建议:大括号的位置:该块的最左侧语句块缩进:缩进的大小是为了清楚的表明一个块的开始和结束,通常缩进2-8格有意义的标识符适当的注释//筛法求素数2008-11-131#defineNUM100002#include<stdio.h>3#include<math.h>4intan[NUM+1];5int6main(void)7{8inti,j,r;9r=sqrt((double)NUM);10an[0]=an[1]=0;11for(i=2;i<=NUM;++i)12an[i]=1;//初始化13for(i=2;i<=r;++i)14if(an[i]==1)//筛去i的倍数15for(j=i*2;j<=NUM;j+=i)16an[j]=0;17for(i=2;i<=NUM;++i)//输出结果18if(an[i]!=0)19printf("%8d",i);20putchar('\n');21return0;22}