- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
参数传递与变量作用域 第八讲 函数参数的概念 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 参数传递方式1 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递 方式:函数调用时,将数据的存储地址作为参数传递给形参 特点: 形参与实参占用同样的存储单元 “双向”传递 实参和形参必须是地址常量或变量 函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #include *.h 用户自定义函数: 函数类型说明 函数说明 一般形式: 函数类型 函数名(形参类型 [形参名],….. ); 或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明 若函数返值是char或int型,系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C++)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明 局部变量与全局变量 局部变量---内部变量 定义:在函数内定义,只在本函数内有效 说明: main中定义的变量只在main中有效 不同函数中同名变量,占不同内存单元 形参属于局部变量 可定义在复合语句中有效的变量 全局变量---外部变量 定义:在函数外定义,可为本文件所有函数共用 有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件 变量存储类型 练习 1.编写一个可判断一个三位数是否为水仙花数的函数,调用它求出所有的水仙花数。 2. 利用递归的方法求出Fibonacci数列的第n项。 3. 编写一判断整数是否素数的函数fun,并通过调用她实现对歌德巴赫猜想的验证。(即验证从键盘输入的一不小于6的正偶数能分解为两个素数之和)。 4.输入一个字符串s和一个指定的字符c,调用函数将s串中的字符c删除。 5. 利用递归的方法将一个正整数逆序输出。 6. 调用函数将一维数组中的值逆序存放。 7.编写函数fun,它的功能是:求出一个字符串中指定的字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出3。 8.编写函数fun,它的功能是:在字符串中的数字字符前加一个$字符。例如,输入a1b23cd45,则输出为a$1b$2$3cd$4$5. 9.编写函数fun,它的功能是:计算一个字符串中子串出现的次数,并返回此值。例如,若输入主字符串:abaabhoyabat,输入子字符串:ab,则输出为3。 10.编写函数fun,其功能是:将s所指字符串中ASII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEDG12345,其中字符B的ASCII码值为偶数应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG135. 11.编写函数fun,它的功能是:求出4*5二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 12.编写函数fun,其功能是:求处一个2*4整型二维数组中最大元素的值,并将此值返回调用函数。 例引用其它文件中的变量,输出a?b和a的m次方 int a; main() { int power(int n); int b=3,c,d,m; printf(Enter the number a and its power:\n); scanf(%d,%d,a,m); c=a*b; printf(%d*%d=%d\n,a,b,c); d=power(m); printf(%d**%d=%d,a,m,d); } extern int a; int power(int n) { int i,y=1; for(i=1;i=n;i++) y*=a; return(y); } * * c=max(a,b); (main 函数) (max 函数) max(int x, int y) { int z; z=xy?x:y; return(z); } 例 比较两个数并输出大者 main() { int a,b,c; scanf(%d,%d,a,b); c=max(a,b); printf(Max is %d,c); }
文档评论(0)