- 1、本文档共160页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数的递归调用-c程序设计基础教程
问题的提出 假如程序上百行,如何调试最方便? 如何有效编程计算 歌德巴赫猜想: 大致可以分为两个猜想: 1.每个不小于6的偶数都可以表示为两个奇素数之和; 2.每个不小于9的奇数都可以表示为三个奇素数之和。 函数定义的一般格式: 函数值类型 函数名(参数说明表) { 函数体 } 其中: ? 函数值类型:函数返回值的类型。如:int float double char void 等 ,缺省按整型处理。 ? 无返回值的函数,函数值类型可选用void,如: void putpixel(int x,int y,int color) ? 函数说明的一般形式: 函数值类型 函数名(参数说明表); ? 如函数值是整型或字符型,可不必说明; ? 如被调函数的定义在主调函数之前,可不必说明; ? 如不说明函数参数,系统不检查参数传递正确性; ? 参数说明表中可只说明形参类型,而无形参本身。 函数的调用 一般形式: 函数名(实参表) 函数的返回值是通过函数中的return语句实现的: return 表达式; 或 return(表达式); 函数参数的传递 函数调用时,主调函数把实参的值传送给被调函 数的形参从而实现主调函数向被调函数的数据传送。 1. 形参和实参 ? 在函数定义时,函数名后面圆括号内的参数称为形式参数 ,简称形参 ? 在函数调用时,函数名后面圆括号内的参数称为实际参数,简称实参 ? 形参变量一般只在发生函数调用时才被分配内存 单元,调用结束后,所占内存单元即刻被释放。 ? 形参变量只有在函数内部有效 。 ? 在函数调用时,先将实参的值赋给形参,然后执 行被调函数的函数体。 ? 实参与形参在数量上,类型上,顺序上应严格一 致。实参可以是常量、变量、表达式或函数等, 要求有确定的值。 ? 实参对形参的数据传递是“值传递”,即单向传递。 因此,函数执行中形参值的改变不会影响实参的 值。 ? 调用函数时的传值有一般的数值和地址值两种, 当形参是数组或指针变量,调用时给出的实参 是地址值(数组名或指针),被调函数用该地 址(数组名或指针)通过间接访问可以存取(改变)主调函数中所指向的变量的值。 例:判断正整数是否为素数的函数。是则返回1; 不是则返回0。 #include math.h int isprime (int n) { int i; if (n==1) return 0; if (n==2) return 1; for(i=2; i=(int)sqrt(n); i++) { if (n%i==0) return 0;} return 1; } 3. 地址值传递 例调用交换两整型量的函数。 ⑴ 用数值传递 void swap ( int a, int b) { int t; t = a; a = b; b = t; } main ( ) { int x = 5, y = 10; swap (x, y); printf(x =%d\ty =%d\n, x, y); } 运行结果: x =5 y =10 (实际未交换) ⑵ 改用指针作为函数的参数。 void swap ( int *a, int *b) { int t; t = *a; *a = *b; *b = t; } main ( ) { int x = 5, y = 10; swap (x, y); printf(x =%d\ty =%d\n, x, y); } 运行结果: x =10 y =5 注:如果需要函数返回多值,可以通过指针参数或 全局变量来实现 4.数组作为函数参数 ? 实参用数组名,形参用数组 例4:求字符串长度。 int my_strlen (char s[ ]) { int i; for (i=0; s[i]!=\0; i++); return i; } main ( ) { char a[50]; gets(a); printf(strlen=%d\n, my_strlen(a)); } 例5:以下程序的运行结果是什么? #include stdio.h f(int a[]) { int i=0; while(a[i]=10) { prin
文档评论(0)