- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计函数解析
回顾 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之 8.1 概述 8.2 函数的定义 8.3 函数的参数和返回值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 构造类型数据作为函数的参数 1、函数的分类: 系统函数(库函数):由C函数库提供,可以直接引用。 用户函数(自定义函数):是用户根据需要定义的完成某一特定功能的一段程序。 用户函数分为: 有参数的函数和无参数的函数。 有返回值函数和无返回值函数 [例8.1]函数实例。 main() { int x=1; void f1(),f2(); f1(); f2(x); printf(x=%d\n,x); } void f1(void) { int x=3; printf(x=%d\t,x); } void f2(x) int x; { printf(x=%d\t,++x); } 8.3 函数的参数和函数的返回值 一个函数与其他函数之间存在数据传递问题,可以通过函数的参数实现。 带参数函数定义的一般形式 类型说明 函数名(形式参数表) 形式参数说明; { 函数体 } 8.3.1 形式参数和实际参数: 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 8.3.2 函数的返回值 返回语句 形式:return(表达式);或return 表达式; 或return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数,返回一个不确定的值 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换 void型函数:若无值返回,则函数应定义为void类型。 #include”stdio.h” fun(int x) {if(x0)return(1); else return(0); } void main() { int a,b; scanf(“%d”,a); b=fun(a); printf(“b=%d\n”,b);} 8.4 函数的调用 8.4.1 函数调用的一般形式 8.4.2 函数说明 8.4.1 函数调用的一般形式 函数调用的一般形式: 函数名(实际参数表) 函数调用的具体方式: (1)语句方式 函数名(实际参数表); (2)表达式方式 变量=带函数的表达式; 8.4.2 函数的说明 被调用函数若为: 系统函数: 本文件开头用#include包含被调用函数信息。 用户函数: 若主调函数与被调函数不在同一文件,则主调函数中需要被调用函数的原型说明。 函数声明形式: 类型名 函数名(类型名 形参1,……); 类型名 函数名(类型名1,类型名2,……); 类型名 函数名(); 编写一个程序求解从m个元素选n个元素的组合数程序。计算公式: 嵌套调用 在调用一个函数的过程中再调用另一个函数。 数组作为函数的参数 数组元素作函数实参——值传递 #include???? stdio.h #include???? string.h typedef??? struct {??? char name[9];??? char sex;??? float score[2];??? } STU; STU???? f(STU???? a) {??? STU???? b={Zhao, ‘m’, 85.0, 90.0};??????? int???? i; ???? strcpy(a.name, b.name); ???? a.sex = b.sex; ???? for (i=0; i2; i++)??? a.score[i] = b.score[i]; ????? return?? a;} main() { STU???? c={Qian, ‘f’, 95.0, 92.0} , d ; ????? d= f(c); printf(%s,%c,%2.0f,%2.0f\n, d .name, d .sex, d .score[0], d .score[1]);} 第8章 函数 C程序结
文档评论(0)