- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c06计算机C语言复习课件
*;主要内容;§6.1 函数的定义;有参函数的定义形式:;§6.1 函数的定义;注意:
函数的定义在程序中都是平行的,即不允许在一个函数的内部再定义另一个函数;
函数名是用户自定义标识符,当函数值为整型时类型名可省略(不推荐省略);当函数不需要向调用处返回值时,使用void类型名
形参表中的形参是用户自定义标识符,没有参数时,圆括号不能省略,此时函数为无参函数。;main( )
{float x= max(3,4);
};注意:
(1)实参向形参的数据传递是单向的“值传递”。实参和形参在内存中被分配到不同的单元,发生函数调用时,只是将实参的“值“传给形参,在函数中即使改变了形参的值也不会影响实参原来的值
(2)实参和形参的顺序应该一致且个数相等。在调用函数时,如果实参顺序与函数定义的形参顺序不一致,形参可能无法接收到正确的值;如果实参与形参个数不一致,编译器会报错
(3)实参和形参的数据类型应尽量保持一致。;§6.2.3 数组作参数;此时与普通变量作为实参进行参数传递没有区别,此时发生单向值传递。;例:计算5个学生成绩的平均分,学生成绩已在数组中存放。;void main(){ float s[5]={80,82,70,90,68}; float a1=f1(s[0],s[1],s[2],s[3],s[4]);//数组元素作实参 float a2=f2(s,5); //数组名(数组首地址)作实参
} ;§6.3 函数的返回值;(1)如函数类型被定义成void以外的任何一种类型,则函数内部必须出现return语句
(2)return语句中表达式的类型应与函数值类型一致。若不一致时,则以函数值的类型为准。;§6.4 函数的调用;程序举例;§6.4.2 函数原型的提前声明;§6.4.2 函数原型的提前声明;§6.4.3 函数的嵌套调用;§6.4.3 函数的嵌套调用;C语言允许函数在定义中直接或间接地调用自己, 即函数的递归调用。;long factorial(int n) {
if(n1) return n*factorial(n-1);?/*递归调用计算n!*/ else
return 1;
};int factorial(int n)
{
if(n1) return n*factorial(n-1);
else
return 1; }??????????????;main( )
{ int x;
long fact( int );
printf(Input a number:\n);
scanf(%d,x);
printf(The result is %ld,fact( x ));
};一般来说,递归需要有边界条件、递归推进段???递归返回段。当边界条件不满足时,递归推进;当边界条件满足时,递归返回。上面例子中边界就是n==1
在考虑使用递归算法编写程序时,应满足两点:
1)该问题能够被递归形式描述;
2)存在递归结束的边界条件,此时不能出现递归调用,否则永远无法返回。 ;§6.4.3 函数的递归调用;§6.4.3 函数的调用;§6.4 函数的调用;void fun(int x){ int y; if (x0) { int x;
…
}} ; main()
{
int i,j;
i=1; j=5;
printf(%d,%d\n,i,j);
{
int i=8;
i++; j++;
printf(%d,%d\n,i,j);
}
i++; j++;
printf(%d,%d\n,i,j);
};变量可以在程序中三个地方说明:
函数的参数定义部分 形式参数
函数内部 局部变量
函数外部 全局变量(即大括号外的变量);§6.5.2 局部变量;#include “stdio.h”void fun(int x, int y){ int z=10; x+=10; y+=10; if(z) { int z=20; printf(“x=%d y=%d z=%d\n”, x, y, z); } printf(“x=%d y=%d z=%d\n”, x, y, z);}int main(){ int x=10, y=10, z=10; fun(x, y); printf(“x=%d y=%d z=%d”, x, y, z);
文档评论(0)