函数与变量存储类别省公共课一等奖全国赛课获奖课件.pptx
《函数与变量存储类别省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《函数与变量存储类别省公共课一等奖全国赛课获奖课件.pptx(76页珍藏版)》请在咨信网上搜索。
1、第七章第七章 函数与变量存放类别函数与变量存放类别C C 程序设计程序设计山西大同大学山西大同大学 物电学院物电学院年3月1第1页第第7章章 函数与预处理命令函数与预处理命令 7.1 7.1 概述概述概述概述7.2 7.2 函数定义与调用函数定义与调用函数定义与调用函数定义与调用7.3 7.3 数组作函数参数数组作函数参数数组作函数参数数组作函数参数7.4 7.4 函数嵌套调用和递归调用函数嵌套调用和递归调用函数嵌套调用和递归调用函数嵌套调用和递归调用7.5 7.5 局部变量和全局变量及其作用域局部变量和全局变量及其作用域局部变量和全局变量及其作用域局部变量和全局变量及其作用域7.6 7.6
2、变量存放类别及变量生存期变量存放类别及变量生存期变量存放类别及变量生存期变量存放类别及变量生存期7.7 7.7 函数存放分类函数存放分类函数存放分类函数存放分类7.8 7.8 编译预处理编译预处理编译预处理编译预处理7.9 7.9 多文件程序调试方法多文件程序调试方法多文件程序调试方法多文件程序调试方法年3月2第2页7.1 概述概述 程序结构清楚,可读性好。程序结构清楚,可读性好。程序结构清楚,可读性好。程序结构清楚,可读性好。降低重复编码工作量。降低重复编码工作量。降低重复编码工作量。降低重复编码工作量。可多人共同编制一个大程序,缩短程序可多人共同编制一个大程序,缩短程序可多人共同编制一个大
3、程序,缩短程序可多人共同编制一个大程序,缩短程序设计周期,提升程序设计和调试效率。设计周期,提升程序设计和调试效率。设计周期,提升程序设计和调试效率。设计周期,提升程序设计和调试效率。使用使用使用使用函数函数函数函数好处好处好处好处C程序程序源程序文件源程序文件n函数函数1函数函数m 源程序文件源程序文件1函数函数1函数函数n年3月3第3页【例例7.1】求一个整数立方。求一个整数立方。int cube(int x)int cube(int x)/*/*函数定义函数定义函数定义函数定义*/return(x*x*x);return(x*x*x);main()main()int f,a;int f,
4、a;printf(nEnter an integer number printf(nEnter an integer number:););scanf(%d,&a);scanf(%d,&a);f=f=cube(a);cube(a);printf(%d*%d*%d=%dn,a,a,a,f);printf(%d*%d*%d=%dn,a,a,a,f);程序运行情况以下:程序运行情况以下:Enter an integer number:2 2*2*2=8函数调用函数调用函数调用函数调用程序执行总是程序执行总是从从main函数开始函数开始年3月4第4页 一个一个C源程序能够由一个或多个源程序文件组源程序
5、能够由一个或多个源程序文件组成。成。C编译系统在对编译系统在对C源程序进行编译时是以文件源程序进行编译时是以文件为单位进行。为单位进行。一个一个C源程序文件能够由一个或多个函数组成。源程序文件能够由一个或多个函数组成。全部函数都是独立。主函数能够调用其它函数,其全部函数都是独立。主函数能够调用其它函数,其它函数能够相互调用。它函数能够相互调用。在一个在一个C程序中,有且仅有一个主函数程序中,有且仅有一个主函数main。C程序执行总是从程序执行总是从main函数开始,调用其它函数后函数开始,调用其它函数后最终回到最终回到main函数,在函数,在main函数中结束整个程序运函数中结束整个程序运行。
6、行。说明说明年3月5第5页 函数种类函数种类从函数定义形式分:从函数定义形式分:有参函数:有参函数:有参函数:有参函数:在主调(用)函数和被调在主调(用)函数和被调在主调(用)函数和被调在主调(用)函数和被调(用)函数之间经过参数(用)函数之间经过参数(用)函数之间经过参数(用)函数之间经过参数进行数据传递,进行数据传递,进行数据传递,进行数据传递,如:如:如:如:int cube(int x)int cube(int x)无参函数:无参函数:无参函数:无参函数:如:如:如:如:getchar()getchar()在调用无参函数时,主调在调用无参函数时,主调在调用无参函数时,主调在调用无参函数
7、时,主调函数不需要将数据传递给函数不需要将数据传递给函数不需要将数据传递给函数不需要将数据传递给无参函数。无参函数。无参函数。无参函数。从使用角度看:从使用角度看:从使用角度看:从使用角度看:标准函数(库函数)标准函数(库函数)标准函数(库函数)标准函数(库函数)库函数是由系统提供。库函数是由系统提供。库函数是由系统提供。库函数是由系统提供。如:如:如:如:getchargetchar()()、sin(x)sin(x)等。等。等。等。在程序中在程序中在程序中在程序中能够直接调用它们。附录能够直接调用它们。附录能够直接调用它们。附录能够直接调用它们。附录A A列出了列出了列出了列出了C C部分库
8、函数。部分库函数。部分库函数。部分库函数。用户自定义函数。用户自定义函数。用户自定义函数。用户自定义函数。如如如如:例例例例7.17.1中中中中cubecube函数。函数。函数。函数。年3月6第6页【例例7.2】无参函数定义与调用。无参函数定义与调用。void welcome()void welcome()printf(*n);printf(*n);printf(Welcome to China n);printf(Welcome to China n);printf(*n);printf(*n);main()main()welcome();welcome();程序输出结果以下:程序输出结果以
9、下:*Welcome to China*年3月7第7页7.2.1 函数定义函数定义函数定义普通形式函数定义普通形式函数定义普通形式函数定义普通形式函数类型函数类型 函数名函数名(类型名类型名 形式参数形式参数1,)说明语句说明语句 执行语句执行语句 比如:求两个数最大值。比如:求两个数最大值。int max(int x,int y)int z;z=x y?x:y;return(z);类型省略时类型省略时默认为默认为int类型类型没有形式参数没有形式参数为为无参函数无参函数 年3月8第8页int max(x,y)int max(x,y)int x,y;int x,y;int z;int z;z=
10、x y?x:z=x y?x:y;y;return(z);return(z);int max(x,y)int x,y;或或int max(int x,y)或或或或int max(x,y)int max(x,y)int x,y,z;int x,y,z;z=x y?x:y;z=x y?x:y;return(z);return(z);花括号中也可认为空,这种函数叫空函数。不能在函数体内定义其他函数,即函数不能嵌套定义。形参也能够这么定义形参也能够这么定义以下定义都是错误以下定义都是错误以下定义都是错误以下定义都是错误 年3月9第9页函数名(实参表列)函数名(实参表列)在在C语言中,把函数调用也作为一个
11、表示式。语言中,把函数调用也作为一个表示式。所以凡是表示式能够出现地方都能够出现函数调所以凡是表示式能够出现地方都能够出现函数调用。比如:用。比如:welcome();if(iabs(a)max)max=iabs(a);m=max(c,max(a,b);7.2.2 函数调用函数调用函数调用普通形式:函数调用普通形式:年3月10第10页int sum100()int sum100()int i,t=0;int i,t=0;for(i=1;i=100;i+)for(i=1;i=100;i+)t+=i;t+=i;return(t);return(t);main()main()int s;int s;
12、s=sum100();s=sum100();printf(%dn,s);printf(%dn,s);程序输出结果:程序输出结果:5050int sum(int x)int sum(int x)int i,t=0;int i,t=0;for(i=1;i=x;i+)for(i=1;iy?x:y;z=xy?x:y;return(z);/*return(z);/*返回返回返回返回z z值值值值*/main()main()int a,b,c;int a,b,c;scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);c=max(a,b);c=max(a,b);printf(max i
13、s%dn,c);printf(max is%dn,c);年3月15第15页函数返回值是经过函数返回值是经过函数返回值是经过函数返回值是经过returnreturn语句带回到主调函数语句带回到主调函数语句带回到主调函数语句带回到主调函数功效:功效:功效:功效:终止函数运行,返回主调函数,若有返回终止函数运行,返回主调函数,若有返回终止函数运行,返回主调函数,若有返回终止函数运行,返回主调函数,若有返回值,将返回值带回主调函数。值,将返回值带回主调函数。值,将返回值带回主调函数。值,将返回值带回主调函数。说明:说明:说明:说明:若函数没有返回值,若函数没有返回值,若函数没有返回值,若函数没有返回值
14、,returnreturn语句能够省略。语句能够省略。语句能够省略。语句能够省略。returnreturn语句中表示式类型普通应和函数类型一语句中表示式类型普通应和函数类型一语句中表示式类型普通应和函数类型一语句中表示式类型普通应和函数类型一致,致,致,致,假如不一致,系统自动将表示式类型转换为假如不一致,系统自动将表示式类型转换为函数类型函数类型。函数返回值函数返回值return return 语句格式:语句格式:语句格式:语句格式:return return(表示式表示式表示式表示式););或或或或 return return 表示式表示式表示式表示式;或或或或 return;return
15、;年3月16第16页【例例7.8】计算并输出圆面积。计算并输出圆面积。s(int r)return 3.14*r*r;main()int r,area;scanf(%d,&r);printf(%dn,s(r);自动转换自动转换自动转换自动转换为为为为intintintint型型型型 思索:思索:若要得到单精度实型圆面积,程序应怎样修改若要得到单精度实型圆面积,程序应怎样修改程序运行情况以下:程序运行情况以下:2 12年3月17第17页 7.2.4 对被调函数申明和函数原型对被调函数申明和函数原型变量要变量要变量要变量要先定义后使用先定义后使用先定义后使用先定义后使用,函数也如此函数也如此函数也
16、如此函数也如此。即。即。即。即被调函数定被调函数定被调函数定被调函数定义要出现在主调函数定义之义要出现在主调函数定义之义要出现在主调函数定义之义要出现在主调函数定义之前前前前。如。如。如。如swapswapswapswap函数函数函数函数:允许整型函数(且参数允许整型函数(且参数允许整型函数(且参数允许整型函数(且参数也是整型)定义出现在主调也是整型)定义出现在主调也是整型)定义出现在主调也是整型)定义出现在主调函数之后。如函数之后。如函数之后。如函数之后。如maxmaxmaxmax函数函数函数函数:假如非整型函数在主调假如非整型函数在主调假如非整型函数在主调假如非整型函数在主调函数之后定义,
17、则应在主调函数之后定义,则应在主调函数之后定义,则应在主调函数之后定义,则应在主调函数中或主调函数之前对函数中或主调函数之前对函数中或主调函数之前对函数中或主调函数之前对被被被被调函数进行申明。调函数进行申明。调函数进行申明。调函数进行申明。void swap(int x,int y)main()swap(a,b);main()main()c=max(a,b);c=max(a,b);max(int x,int y)max(int x,int y)年3月18第18页对被调函数进行申明普通形式对被调函数进行申明普通形式 函数类型函数类型函数类型函数类型 函数名(函数名(函数名(函数名(参数类型参数
18、类型参数类型参数类型1 1 1 1 参数名参数名参数名参数名1 1 1 1,);或或或或 函数类型函数类型函数类型函数类型 函数名(函数名(函数名(函数名(参数类型参数类型参数类型参数类型1 1 1 1,参数类型参数类型参数类型参数类型2 2 2 2,);思索思索思索思索:以下哪种情况需要以下哪种情况需要以下哪种情况需要以下哪种情况需要在主调函数中在主调函数中在主调函数中在主调函数中对被调函数对被调函数对被调函数对被调函数申明申明申明申明被调函数定义在前被调函数定义在前被调函数定义在前被调函数定义在前,主调函数定义在后主调函数定义在后主调函数定义在后主调函数定义在后。主调函数定义在前主调函数定
19、义在前主调函数定义在前主调函数定义在前,被调函数定义在后被调函数定义在后被调函数定义在后被调函数定义在后,且被调,且被调,且被调,且被调函数类型不是整型。函数类型不是整型。函数类型不是整型。函数类型不是整型。被调函数定义在后被调函数定义在后被调函数定义在后被调函数定义在后,但被调函数类型是,但被调函数类型是,但被调函数类型是,但被调函数类型是整型整型整型整型。第二种形式省略了参数名,此种形式也称为第二种形式省略了参数名,此种形式也称为函数原型函数原型。年3月19第19页main()void calc(float x,float y,char opr);float a,b;char opr;pr
20、intf(nInput expression:);scanf(%f%c%f,&a,&opr,&b);calc(a,b,opr);void calc(float x,float y,char opr)switch(opr)case +:printf(%5.2f%c%5.2f=%6.2fn,x,opr,y,x+y);return;case -:printf(%5.2f%c%5.2f=%6.2fn,x,opr,y,x-y);return;case *:printf(%5.2f%c%5.2f=%6.2fn,x,opr,y,x*y);return;case /:printf(%5.2f%c%5.2f=%
21、6.2fn,x,opr,y,x/y);return;default:printf(Operator err!n);对被调函对被调函数申明数申明【例例7.9】计算并输出两个数和、差、积、商。计算并输出两个数和、差、积、商。年3月20第20页 图图 7.2 验证哥德巴赫猜测验证哥德巴赫猜测输入输入n值值 for(a=6;a=n;a+=2)for(b=3;b=a/2;b+=2)b是素数是素数?T F c=a-b c是素数?是素数?T F 输出:输出:a、b、c值值 break;【例例例例7.107.10】哥德巴赫猜测之一是任何一个大于哥德巴赫猜测之一是任何一个大于哥德巴赫猜测之一是任何一个大于哥德巴
22、赫猜测之一是任何一个大于5 5偶数都偶数都偶数都偶数都能够表示为两个素数之和。验证这一论断。能够表示为两个素数之和。验证这一论断。能够表示为两个素数之和。验证这一论断。能够表示为两个素数之和。验证这一论断。年3月21第21页#include math.h#include math.hint prime(int n);int prime(int n);main()main()int a,b,c,n;int a,b,c,n;scanf(%d,&n);scanf(%d,&n);for(a=6;a=n;a+=2)for(a=6;a=n;a+=2)for(b=3;b=a/2;b+=2)for(b=3;b
23、=a/2;b+=2)if(prime(b)if(prime(b)c=a-b;c=a-b;if(prime(c)if(prime(c)printf(%d=%d+%dn,a,b,c);printf(%d=%d+%dn,a,b,c);break;break;/*穷举法判断素数穷举法判断素数*/int prime(int n)int i;for(i=2;i=sqrt(n);i+)if(n%i=0)return 0;return 1;能够在能够在main函数前面对函数前面对prime函函数进行申明。实际上,该申明数进行申明。实际上,该申明能够省略,为何?能够省略,为何?程序以下:程序以下:年3月22第2
24、2页7.3 数组作函数参数数组作函数参数7.3.1 一维数组元素作函数参数一维数组元素作函数参数main()int a5,i,m;for(i=0;i5;i+)scanf(%d,&ai);m=a0;for(i=1;i5;i+)m=min(m,ai);printf(%dn,m);【例例7.11】求求5个数中最小值。个数中最小值。int min(int x,int y)return(xy?x:y);用打擂台方法求用打擂台方法求用打擂台方法求用打擂台方法求最小值。最小值。最小值。最小值。mm相当相当相当相当于擂主于擂主于擂主于擂主年3月23第23页7.3.2 一维数组名作函数参数一维数组名作函数参数数
25、组名数组名数组名数组名表示数组在内存中表示数组在内存中表示数组在内存中表示数组在内存中起始地址起始地址起始地址起始地址。比如比如比如比如:数组数组数组数组a a在内存中从在内存中从在内存中从在内存中从地址开始存放地址开始存放地址开始存放地址开始存放,则则则则a a值为值为值为值为。是是是是地址值,是指针类型数据(第地址值,是指针类型数据(第地址值,是指针类型数据(第地址值,是指针类型数据(第8 8中将介绍指针类型),中将介绍指针类型),中将介绍指针类型),中将介绍指针类型),不能把它看成是整型或其它类型数据。不能把它看成是整型或其它类型数据。不能把它看成是整型或其它类型数据。不能把它看成是整型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 变量 存储 类别 公共课 一等奖 全国 获奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。