计算机软件基础(自考本科函数).ppt
《计算机软件基础(自考本科函数).ppt》由会员分享,可在线阅读,更多相关《计算机软件基础(自考本科函数).ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机计算机 软件基础软件基础第一篇第一篇C语言程序设计基础语言程序设计基础第四章函数第四章函数第四章函数第四章函数一、函数的概念一、函数的概念1.函数:是一个能独立完成一定功能的程序段。函数:是一个能独立完成一定功能的程序段。2.函数的种类:函数的种类:库函数库函数和和用户自定义函数用户自定义函数。库函数名库函数名类型类型函数函数#include输入、输入、输出类输出类getchar(),putchar();scanf(),printf();gets(),puts()等函数。等函数。#include字符串字符串处理类处理类strlen(),strcat(),strcmp(),strcpy()
2、等函数。等函数。#include数学类数学类fabs(),sqrt(),sin(),cos()等函数。等函数。一、函数的概念一、函数的概念例例4-1求求s=2!+3!+7!main()int i,p,q,r,s;p=1;for(i=1;i=2;i+)p=p*i;q=1;for(i=1;i=3;i+)q=q*i;r=1;for(i=1;i=7;i+)r=r*i;s=p+q+r;printf(s=%dn,s);一、函数的概念一、函数的概念例例4-1 求求s=2!+3!+7!int f1(int n)/*fl函数的首部函数的首部*/int x=1,i;/*函数体中的说明部分函数体中的说明部分*/fo
3、r(i=1;i y?x:y;renturn(z);实参:实参:在调用函数时使用在调用函数时使用的参数,称为实参。的参数,称为实参。形参形参形参形参实参实参实参实参一、函数的概念一、函数的概念例例4-2求两整数之和的程序如下:求两整数之和的程序如下:int sum(int x,int y)/*定义含两个形参的定义含两个形参的sum函数函数*/int z;/*函数体中函数体中z变量定义变量定义*/z=x+y;return(z);/*返回两整数之和返回两整数之和*/main()/*程序由此开始程序由此开始*/int a,b,c;scanf(%d,%d,&a,&b);/*输入输入a、b两变量的值两变量
4、的值*/c=sum(a,b);/*调用函数调用函数sum,其中其中a、b为实参为实参*/printf(sum=%dn,c);/*输出输出sum函数调用结果函数调用结果*/*程序到此结束程序到此结束*/三、函数的参数和返回值三、函数的参数和返回值1.函数的参数函数的参数形参与实参之间的关系形参与实参之间的关系相同点相同点不同点不同点个数个数相等相等实参必须有确定的数值实参必须有确定的数值顺序顺序一致一致形参必须指定类型形参必须指定类型类型类型相符相符注意:注意:如果形参与实参的类型不一如果形参与实参的类型不一致,则在调用函数时,则自动按形致,则在调用函数时,则自动按形参类型转换。参类型转换。形参
5、在函数被调用之前不占内参;形参在函数被调用之前不占内参;函数调用时为形参分配内存;函数调用时为形参分配内存;调用结束时,所分配的内存自动释调用结束时,所分配的内存自动释放。放。三、函数的参数和返回值三、函数的参数和返回值2.函数的返回值函数的返回值没有返回值的函数没有返回值的函数有返回值的函数有返回值的函数 若函数中,若函数中,renturnrenturn语语句后面无表达式,这时函数句后面无表达式,这时函数没有返回值。没有返回值。没有返回值的函数,其没有返回值的函数,其定义类型为定义类型为空类型空类型,用类型用类型名名voidvoid表示。表示。若函数中,若函数中,returnreturn语句
6、后面有表达式,语句后面有表达式,则该函数一定有返回值。则该函数一定有返回值。return return后面表达式值的类型以所在函后面表达式值的类型以所在函数的类型为准。数的类型为准。当函数类型为当函数类型为intint时,函数类型名时,函数类型名intint可以不写,系统默认为可以不写,系统默认为intint。四、函数的调用四、函数的调用1.函数调用的两种情况函数调用的两种情况没有返回值的调用没有返回值的调用有返回值的调用有返回值的调用调用格式调用格式函数名函数名 (实参表列);(实参表列);函数名函数名 (实参表列);(实参表列);说说 明明(1 1)这种调用是语句的)这种调用是语句的调用,
7、没有返回值;调用,没有返回值;(2 2)被调函数执行完后,)被调函数执行完后,返回带主调函数中调用返回带主调函数中调用语句的下一条语句继续语句的下一条语句继续执行。执行。(1 1)这种调用为表达式调用,只能出)这种调用为表达式调用,只能出现在表达式所能出现的地方;现在表达式所能出现的地方;(2 2)被调函数中一定有)被调函数中一定有“return return 表表达式;达式;”语句,被调函数调用完后执语句,被调函数调用完后执行行renturnrenturn语句,将表达式的值返回到语句,将表达式的值返回到调用表达式处参加运算;调用表达式处参加运算;四、函数的调用四、函数的调用例例4-3下面是求
8、两个数最大值的程序。下面是求两个数最大值的程序。main()/*程序由此开始程序由此开始*/void max(int,int);/*对被调空类型函数对被调空类型函数max的声明的声明*/int a,b;scanf(%d,%d,&a,&b);max(a,b);/*用语句调用用语句调用max函数函数*/*程序到此结束程序到此结束*/void max(int x,int y)/*被调函数是空类型被调函数是空类型,无返回值无返回值*/int z;z=xy?x:y;printf(max=%dn,z);/*返回主调函数返回主调函数main中调用语句中调用语句max(a,b);的下一句的下一句*/四、函数的
9、调用四、函数的调用例例4-4将例将例4-3求两数最大值改为表达式调用。求两数最大值改为表达式调用。main()int a,b;scanf(%d,%d,&a,&b);printf(max=%dn,max(a,b);/*输出输出max调用结果调用结果,max(a,b)是调用表达式是调用表达式*/int max(int x,int y)/*max为整型函数为整型函数*/int z;z=xy?x:y;return z;四、函数的调用四、函数的调用2.函数调用时的数据传递函数调用时的数据传递之一之一:单向值传递方式:单向值传递方式定义:调用函数时,将实参计算出来,赋给形参,即:定义:调用函数时,将实参计
10、算出来,赋给形参,即:数据只能从实参单向传递给形参。数据只能从实参单向传递给形参。特点:特点:(2)函数中对形参的操作不会影响到主调用函数中)函数中对形参的操作不会影响到主调用函数中的实参;的实参;(3)单向传递时,实参可以是常数,已有值的变量或)单向传递时,实参可以是常数,已有值的变量或表达式。而形参一般是变量。表达式。而形参一般是变量。(1)函数调用时,为形参临时分配一个存储空间,)函数调用时,为形参临时分配一个存储空间,而且调用结束后,将所分配的临时存储空间收回;而且调用结束后,将所分配的临时存储空间收回;四、函数的调用四、函数的调用例例4-5分析程序分析程序,写出运算结果。写出运算结果
11、。main()void f2(int,int);/*对将要调用的空类型函数对将要调用的空类型函数f2的声明的声明*/int a=2,b=8;f2(a,b);/*用语句调用用语句调用f2函数函数*/printf(a=%d,b=%dn,a,b);/*语句调用完后返回到该语句语句调用完后返回到该语句*/void f2(x,y)/*f2函数为空类型函数为空类型*/int x,y;/*形参类型说明形参类型说明*/int m;m=x;x=y;y=m;/*x,y两变量交换值两变量交换值*/printf(x=%d,y=%dn,x,y);return;四、函数的调用四、函数的调用2.函数调用时的数据传递函数调用
12、时的数据传递之二之二:地址传递方式:地址传递方式定义:调用函数时,传递的相应参数是一个地址,即定义:调用函数时,传递的相应参数是一个地址,即变量的存储地址,对这个地址内的数据进行访问或修变量的存储地址,对这个地址内的数据进行访问或修改会影响到实参。改会影响到实参。特点:特点:(1)函数调用时,不会为形参分配存储空间;)函数调用时,不会为形参分配存储空间;(2)形参所指向的是存放实参的存储地址;)形参所指向的是存放实参的存储地址;(3)对形参的修改,相当于在对实参进行修改。)对形参的修改,相当于在对实参进行修改。四、函数的调用四、函数的调用例例4-6编写将数组编写将数组a中最大数和最小数对调的程
13、序中最大数和最小数对调的程序#define M 6 /*程序中凡是出现程序中凡是出现M的地方的地方,均用均用6替换替换*/main()/*程序由此开始程序由此开始*/void f3(int x);/*对将要调用的空类型函数对将要调用的空类型函数f3声明声明*/int aM,i;for(i=0;iM;i+)scanf(%d,&ai);/*输入输入a数组各元素值数组各元素值*/f3(a);/*语句调用语句调用,f3函数调用完后返回到下一句函数调用完后返回到下一句*/for(i=0;iM;i+)printf(%4d,ai);/*输出对调后的输出对调后的a数组值数组值*/printf(n);/*程序到
14、此结束程序到此结束*/四、函数的调用四、函数的调用void f3(int x)int max,maxi,min,mini,i,w;max=min=x0;maxi=mini=0;for(i=1;imax)/*求最大值求最大值max及它的序号及它的序号maxi*/max=xi;maxi=i;if(ximin)/*求最小值求最小值min及它的序号及它的序号mini*/min=xi;mini=i;w=xmaxi;xmaxi=xmini;/*最大值最大值,最小值交换位置最小值交换位置*/xmini=w;/*返回到返回到main主调函数中主调函数中f3(a);语句的下一句语句的下一句*/四、函数的调用四、
15、函数的调用例例4-7把把Ann二维数组对角线元素置二维数组对角线元素置l,并求其余元素并求其余元素之和之和,要求用函数完成。要求用函数完成。四、函数的调用四、函数的调用main()/*程序由此开始程序由此开始*/int a44,i,j,s;for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);/*输入数组各元素值输入数组各元素值*/s=f4(a);/*s中存放除对角线元素外其余元素之和中存放除对角线元素外其余元素之和*/for(i=0;i4;i+)for(j=0;j4;j+)printf(%4d,aij);/*输出对角线元素置输出对角线元素置1后的数组后的数组*
16、/printf(n);四、函数的调用四、函数的调用int f4(int x4)int sum=0,i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(i=j|i+j=3)/*对角线元素包含主对角及副对角元素对角线元素包含主对角及副对角元素*/xij=1;/*置置l*/else sum=sum+xij;/*其余元素求和其余元素求和*/return(sum);/*返回给主调函数中返回给主调函数中S变量变量*/四、函数的调用四、函数的调用3.函数调用时的数据传递函数调用时的数据传递之三之三:返回值传递方式:返回值传递方式定义:使用定义:使用“return 表达式表达式;”语句,将值
17、回传到主调语句,将值回传到主调函数。函数。特点:特点:(1)使用)使用“return 表达式表达式;”语句,来回传值;语句,来回传值;(2)使用)使用“返回值类型返回值类型 函数名函数名(参数列表)(参数列表)”形式,形式,来定义函数。来定义函数。五、局部变量和全局变量五、局部变量和全局变量局部变量局部变量全局变量全局变量概念概念在函数内部定义的变量在函数内部定义的变量在函数外部定义的变量在函数外部定义的变量作用域作用域所在的函数所在的函数整个程序整个程序说明说明不同函数不同函数中可以使用中可以使用相同的相同的变量变量名,但它们是不同的量,名,但它们是不同的量,相互不干扰。相互不干扰。(1 1
18、)全局变量在程序执行过程中,)全局变量在程序执行过程中,一直占用存储空间,降低了空间利一直占用存储空间,降低了空间利用率;用率;(2 2)全局变量牵制了各个函数,)全局变量牵制了各个函数,降低了各函数之间的相对对立性;降低了各函数之间的相对对立性;(3 3)各函数执行时,都可能改变)各函数执行时,都可能改变全局变量的值,程序容易出错。全局变量的值,程序容易出错。四、函数的调用四、函数的调用例例4-8int f5(int a,int b)/*函数函数f5*/a=a+b;b=a+b;printf(al=%d,bl=%dn,a,b);main()/*程序由此开始程序由此开始*/int a=5,b=8
19、;f5(a,b);printf(a2=%d,b2=%dn,a,b);/*程序到此结束程序到此结束*/四、函数的调用四、函数的调用例例4-9main()int a=1,b=2,c=3;a+;c+=b;int b=4,c;c=2*b;a+=c;printf(al=%d,bl=%d,cl=%dn,a,b,c);printf(a2=%d,b2=%d,c2=%dn,a,b,c);四、函数的调用四、函数的调用例例4-10输出输出l4的阶乘值的阶乘值int f7(int n)/*函数函数f7*/int i,s=1;for(i=1;i=n;i+)s=s*i;return s;main()/*主函数主函数*/i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 基础 自考 本科 函数
限制150内