手机版

C语言第六章 模块化程序设计语言

时间:2025-04-22   来源:未知    
字号:

资源齐分享.....

第六章 函数§6.1 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充

开发方法: 自上向下,逐步分解,分而治之

资源齐分享.....

C是模块化程序设计语言C程序

源程序文件1

源程序文件i

源程序文件n

预编译命令

函数1

函数n

说明部分

执行部分

C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用

C程序结构

资源齐分享.....

函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数

从函数形式 无参函数 有参函数

使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件

Ch7_201.c

资源齐分享.....

§6.2 函数的定义 一般格式现代风格:

函数返回值类型 缺省int型 无返回值void

合法标识符

函数类型 函数名(形参类型说明表) { 说明部分 语句部分 } 例 有参函数(现代风格) 例 例 有参函数(现代风格) 例 x, int 无参函数 y) y) max(int 空函数 int max(int x,int printstar( ) dummy( ) { {int int z; z; { printf(“**********\n”); } { } z=x>y?x:y; z=x>y?x:y; 或 return(z); return(z); printstar(void ) 函数体为空 } } { printf(“**********\n”); }

函数体

资源齐分享.....

传统风格:

函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 }

例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }

资源齐分享.....

例 无返回值函数 §6.3 函数的返回值 void swap(int x,int y ) 返回语句 { int temp; temp=x; 形式: return(表达式); x=y; 或 return 表达式; y=temp; 或 return; } 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者 为准,自动转换------函数调用转换 void型函数

资源齐分享.....

例 函数带回不确定值

printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }输出:10

void printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }编译错误!

资源齐分享.....

例 函数返回值类型转换

main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); }

资源齐分享.....

§6.4 函数的调用 调用形式函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺

序一一对应 实参表求值顺序,因系统而定(Turbo C 自右向左)

资源齐分享.....

例 参数求值顺序 main() { int i=2,p; p=f(i,++i); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:0 main() { int i=2,p; p=f(i, i++); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:1

资源齐分享.....

调用方式 函数语句: 例 printstar(); printf(“Hello,World!\n”); 函数表达式: 例 m=max(a,b)*2; 函数参数: 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));

资源齐分享.....

函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #include <*.h> 用户自定义函数: 函数类型说明

函数说明 一般形式: 函数类型 函数名(形参类型 [形参名],….. ); 或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明 若函数返值是char或int型,系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C++)要求函数说明指出函数返值类型和形 参类型,并且对void 和 int 型函数也要进行函数说明

资源齐分享.....

例 函数说明举例 /*ch7_5.c*/ main() /*ch7_5.c*/ main() { add(float,float); /*function declaration*/ { float add(float x, float y) float float a,b; {float intz; float c; a,b,c; float add(); scanf("%f,%f",&a,&b); z=x+y; scanf("%f,%f",&a,&b); c=max(a,b); return(z); c=add(a,b); 被调函数出现在主调函数 printf("Max is %d\n",c); }printf("sum is %f",c); 之前,不必函数说明 } } main() int型函数可不作函数说明 { max(float x, float y) floatfloat a,b,c;x, float y) add(float (Borland C++不行) { z; scanf("%f,%f",&a,&b); { float float z; z=x>y?x:y; c=add(a,b); z=x+y; return(z); printf("sum is %f",c); return(z); }} }

资源齐分享.....

§6.5 函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 例 比较两个数并输出大者

main() { int a …… 此处隐藏:1660字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言第六章 模块化程序设计语言.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)