《C语言程序设计》课件-项目6:函数_第1页
《C语言程序设计》课件-项目6:函数_第2页
《C语言程序设计》课件-项目6:函数_第3页
《C语言程序设计》课件-项目6:函数_第4页
《C语言程序设计》课件-项目6:函数_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论