模块化程序设计.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行结果: 1.5, 4.7 Max is 4
8.4 函数的调用
8.4.1 函数调用的一般形式
一般形式 : 函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序 一一对应
8.4.2 函数调用的方式
函数语句: 例 printstar(); printf(“Hello,World!\n”); 函数表达式: 例 m=max(a,b)*2; 函数参数: 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
例 交换两个数
/*c7_3.c*/ #include <stdio.h> void main(void) { int x=7,y=11; printf("x=%d,\ty=%d\n",x,y); printf("swapped:\n"); swap(x,y); printf("x=%d,\ty=%d\n",x,y); } void swap(int a,int b) { int temp; temp=a; a=b; b=temp; } 运行结果:x=7, y=11 swapped: x=7, y=11 调用前: x: 7 x: 7 调用: a: 7 x: 7 a: 11 temp 调用结束: x: 7 y: 11 y: y: 11 11
b: 11 y: b: 11 7
swap:
值传递方式,单向传递
8.3.2 函数的返回值
返回语句
形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返回值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇 } 时,自动返回调用函数 例 无返回值函数 若函数类型与return语句中表达式值的类型不一 void swap(int x,int y ) 致,按前者为准,自动转换 ----函数调用转换 { int temp; void型函数用来明确表明函数不带回任何值 temp=x;
第八章 函 数
8.1 概述
模块化程序设计
基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之
8.4.3 对被调用函数的声明和函数原型
对被调用函数要求:
必须是已存在的函数 库函数: #include <*.h> 用户自定义函数: 主调函数对被调函数作函数声明
函数声明
一般形式:函数类型 函数名(形参类型1[形参名1],….. ); char letter(char ,char); float add(float x,float y) ();(不提倡使用) 或:函数类型 函数名 float f(float,float); {float z; 作用:告诉编译系统函数类型、参数个数及类型,以便检验 int i(float,float); z=x+y; 函数定义与函数声明不同 return (z);} void main(void) 函数声明位置:程序的数据说明部分(函数内或外) {…} 下列情况下,可不作函数声明 void main(char (void) char letter c1,char c2) {float a,b,c; char或int型,系统自动按int型处理 • 若函数返值是 {…} scanf(“%f,%f”,&a,&b); • 被调用函数定义出现在主调函数之前 float f(float x,float y) c=add(a,b); {…} • 在所有的函数定义之前,在函数的外部已做了函数声明 int i(flaot j,float k) printf(“%f”,c); 有些系统 (如Borland C++)要求函数声明指出函数返回值类型和 {…} } 形参类型,并且对void 和 int 型函数也要进行函数声明
x=y; y=temp; }
例8-3 函数返回值类型自动转换为函数类型 #include<stdio.h> void main(void) { float a,b; int c; int max(float x,float y); scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } int max(float x, float y) { float z; z=x>y?x:y; return(z); }
8.3 函数参数和函数的值
8.3.1 形式参数与实际参数
形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 说明: #include<stdio.h> (c7_2.c) 例 比较两个数并输出大者 实参必须有确定的值 void main(void) 形参必须指定类型 { int a,b,c; int max(int x,int y); 形参与实参类型一致,个数相同 scanf("%d,%d",&a,&b); c=max(a,b); 若形参与实参类型不一致 ,自动按形参类型转换 c=max(a,b); (main 函数) 实参 printf("Max is %d",c); —函数调用转换 } max(int x,int y) (max 函数) ,为形参分 { int z; 参数传递方式为值传递方式:函数调用时 int max(int x,int y) 形参 z=x>y?x:y; { int z; 配单元,并将实参的值复制到形参中;调用结束,形 return(z); z=x>y?x:y; 参单元被释放,实参单元仍保留并维持原值 。特 } return(z); 点:形参与实参占用不同的内存单元;单向传递 }
8.2 函数的定义的一般形式
一般格式
现代风格:
函数返回值类 型 缺省int型 无返回值void 合法标识符
函数类型 函数名(形参类型说明表) { 说明部分 语句部分 }
函数体
例 有参函数(现代风格) 例 例 有参函数(现代风格) 无参函数 例 空函数 int max(int x, int y) int void max(int printstar( x, y) ) dummy( ) { int z; { { int printf(“********** z; \n”); } { } z=x>y?x:y; 或 z=x>y?x:y; return(z); void return(z); printstar(void ) 函数体为空 { } }printf(“**********\n”); }
C是模块化程序设计语言
C程序
ຫໍສະໝຸດ Baidu
源程序文件1
源程序文件i
源程序文件n
预编译命令
函数1
函数n
说明部分
执行部分
C程序结构 C是函数式语言(c7_1.c) 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
函数分类
从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
相关文档
最新文档