版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计函数的引入CONTENTS01函数的定义02函数的使用目录函数的定义问题的提出:【问题1】:输入正整数n,判断n是否为质数如果是质数yn=1,不是质数yn=0程序代码:intmain(){inti,n,yn;printf("n=");scanf("%d",&n);if(n<2)return0;for(i=2;i<n;i++)if(n%i==0)break;if(i<n)yn=0;elseyn=1;printf("yn=%d\n",yn);return0;}【问题2】:10到50之间有多少个质数。解决办法:将判断n是否是质数的程序段,独立出来,循环调用函数的定义定义函数的方法:返回值类型函数名(参数类型参数名1,…参数类型参数名n){执行语句
return返回值}
在C语言程序设计中,函数是一个命名的程序段,负责完成特定的、相对独立的动作或计算。函数的定义【样例1】:编写函数判断正整数n,是否为质数,是,则返回1,不是,则返回0#include<stdio.h>intisPrime(intn){if(n<2)return0;inti;for(i=2;i<n;i++)if(n%i==0)break;if(i<n)return0;elsereturn1;}函数的使用【样例2】求10到50之间有多少个质数#include<stdio.h>intisPrime(intn){if(n<2)return0;inti;for(i=2;i<n;i++)if(n%i==0)break;if(i<n)return0;elsereturn1;}intmain(){intk,count=0;for(k=10;k<=50;k++){if(isPrime(k)==1)count++;}
printf("count=%d\n",count);return0;}C语言程序设计有参函数与无参函数CONTENTS01有参函数02无参函数目录有参函数有参函数的定义形式如下:
返回值类型函数名(形式参数列表) {
函数体retrun返回值; }例如:求两个整数的最大值
intmax(inta,intb){intm;….
returnm;}【样例1】输入四个整数,求第1个第3个的最大值与第2个第4个最大值之差有参函数【样例1】输入四个整数,求第1个第3个的最大值与第2个第4个最大值之差#include<stdio.h>intmax(inta,intb){intm;if(a>b)m=a;elsem=b;returnm;}intmain(){inta,b,c,d;printf("abcd=?\n");scanf("%d%d%d%d",&a,&b,&c,&d);printf("两最大值差为:%d\n",max(a,c)-max(b,d));return0;}无参函数无参函数的定义形式如下:
返回值类型函数名()
{
函数体
retrun返回值;
}无参函数【样例2】#include<stdio.h>intmax(inta,intb){intm;if(a>b)m=a;elsem=b;returnm;}voidprtLine(){printf("------------------\n");return;}intmain(){inta,b,c,d;printf("abcd=?\n");scanf("%d%d%d%d",&a,&b,&c,&d);prtLine();printf("两最大值差为:%d\n",max(a,c)-max(b,d));return0;}C语言程序设计累加函数的编写总结下面我们运行一下程序。输入n。n=3输出结果:等于10。需要说明的是。sigmak.这个k为形式参数。我们可以把它改为n.不影响程序的运行结果。C语言程序设计外部函数与内部函数CONTENTS01内部函数03样例分析目录02外部函数内部函数
static类型名函数名(形参表);1、因为是使用static声明的,所以内部函数又称为静态函数。2、内部函数的作用域只局限于所在文件。
在由多人分别编写不同的程序模块时,不可避免会产生同名问题,使用内部函数,即使函数名相同,也不会产生干扰。外部函数
外部函数在整个源程序中都有效。事实上C语言规定,如果在定义函数时省略extern,则默认为外部函数。extern类型名函数名(形参表);样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【结论】1、将b.c中的f1()声明为static,则程序运行不受a.c的影响。
【问题】b.c中有同名的函数f1()代码如下:样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【结论】
2、b.c中的f1()未声明为static,则编译出错
【问题】b.c中有同名的函数f1()代码如下:样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【结论】
3、b.c中无法使用a.c中的f3()函数【问题】b.c中使用f3()函数代码如下:样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【结论】
4、b.c中可重新定义f3()函数,该函数既可以使用static也可以使用extern【问题】b.c中自定义f3()函数代码如下:样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【结论】
5、b.c中可以使用a.c中的f4(),而f4()调用的是a.c中的f3();【问题】b.c中使用f4()函数代码如下:样例分析【前提】a.c文件中有多个函数,f1()、f2()为外部函数,f3()定义为内部函数、f4()为外部函数,在f4()中调用f3()。a.c经过编译后供b.c、c.c、d.c等调用【问题】b.c中有同名的函数f1()【结论】1、将b.c中的f1()声明为static,则程序运行不受a.c的影响。
2、b.c中的f1()未声明为static,则编译出错
3、b.c中无法使用a.c中的f3()函数
4、b.c中可重新定义f3()函数,该函数既可以使用static也可以使用extern5、b.c中可以使用a.c中的f4(),而f4()调用的是a.c中的f3();总结
static类型名函数名(形参表);内部函数的作用域只局限于所在文件。内部函数C语言程序设计局部变量与全局变量CONTENTS01局部变量02全局变量目录局部变量C语言允许在3个地方定义变量。①函数内部的声明部分。②函数的外部。③复合语句中的声明部分。
变量定义的位置不同,作用域也不同。从变量的作用域来分,可以将其分为局部变量和全局变量。
局部变量局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,其作用域仅限于该函数内。此外,局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。局部变量局部变量:①不同的函数可使用相同名的变量名,由于它们的作用域不同,在内存所处的地址也不同,其实质是不同的变量。②形参也是局部变量。在函数调用时为其分配内存,退出函数时将释放所占内存。③在一个函数内部可在复合语句中定义变量,但变量只在本复合语句中有效局部变量程序分析1全局变量在所有函数外部定义的变量称为全局变量(包括main()函数),它不属于哪一个函数,而是属于源程序。因此全局变量可以为程序中的所有函数所共用。它的有效范围从定义处开始到源程序结束。全局变量
全局变量的有效范围为从定义全局变量的位置开始到该源文件结束。若在全局变量定义处之前的函数想引用该全局变量,则需要在该函数中用关键字extern作外部变量声明。如果全局变量与局部变量同名,则在局部变量的作用范围内,全局变量不起作用(程序对变量的引用遵守最小作用域原则)。全局变量程序分析2思考:将externintx,y;改为
intx,y;运行结果会如何?全局变量程序分析3C语言程序设计递归函数的编写CONTENTS01分段函数的编写02递归函数的编写目录分段函数的编写分段函数样例:【子程序】n为整数
f(n)=2n+3当n>3
f(n)=n+6当n<=3
【主程序】输出:f(1)+f(6)的值分段函数的编写分段函数的代码【子程序】n为整数
f(n)=2n+3当n>3
f(n)=n+6当n<=3【主程序】输出:f(1)+f(6)的值主程序代码子程序代码递归函数的编写递归函数样例:n为正整数,利用递归函数计算1+2+3+…+n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年吉林白城市初二地理生物会考试题题库(答案+解析)
- 2026年全国施工员之市政施工专业管理实务考试压轴试题附答案
- 2026服装品牌业竞争态势分析及投资发展规划报告
- 解构股权密码:房地产上市公司股权结构与绩效的深度实证探究
- 2026服装制造供应链行业市场全面分析及投资机会与市场竞争力研究报告
- 2026服装制造业市场分析及定制设计与智能制造研究报告
- 2026服务信用信息公示系统行业安全分析深度信息收集及消费权益保护与公共服务研究报告事项
- 2026晶圆级测试与封装一体化趋势对产业格局影响研究
- 2026明台行业风险投资发展分析及投资融资策略研究报告
- 2026斐济棕榈酒制造业发展瓶颈与创新突破及政策支持与市场潜力挖掘研究
- 《化工企业可燃液体常压储罐区安全管理规范》解读课件
- 高层建筑外墙广告牌吊篮施工方案
- GB/T 46623-2025金属增材制造成形件机械性能与其取样方向、位置的相关性
- 《泰国人学汉语》课件
- 资产重组在制造业中的应用与前景研究报告
- DB33∕T 1398-2024 惠民型商业补充医疗保险服务规范
- 地贫防控知识培训课件
- 2024年浙江省慈溪市中考数学考前冲刺试卷及参考答案详解【培优】
- 一张纸水库防汛应急预案
- 健康教育学题库及答案
- 四川省成都市天府七中2024-2025学年八年级下学期第二次段考数学试卷(含答案)
评论
0/150
提交评论