第7章_用函数实现模块化程序设计_[谭浩强_C程序
发布时间:2021-06-11
发布时间:2021-06-11
问题: 如果程序的功能比较多,规模比较大,把所有代 码都写在main函数中,就会使主函数变得庞杂、 头绪不清,阅读和维护变得困难 有时程序中要多次实现某一功能,就需要多次重 复编写实现此功能的程序代码,这使程序冗长, 不精炼
解决的方法:模块化程序设计的思路 “组装” 事先编好一批实现各种不同功能的函数 每一个函数用来实现一个特定的功能 函数的名字应反映其代表的功能 把它们保存在函数库中,需要时直接用
第7章 用函数实现模块化程序设计
C程序可由一个主函数和若干个其他函数构成
主函数调用其他函数,其他函数也可以互相调用 同一个函数可以被一个或多个函数调用任意多次
main
ad e f e
bg h
ci
可以使用库函数
可以使用自己编写的函数 在程序设计中要善于利用函数,可以减少 重复编写程序段的工作量,同时可以方便 地实现模块化的程序设计
例7.1 输出以下的结果,用函数调用实现。
******************How do you do!
******************
解题思路: 在输出的文字上下分别有一行“*”号,显然不 必重复写这段代码,用一个函数print_star来 实现输出一行“*”号的功能。 再写一个print_message函数来输出中间一 行文字信息
用主函数分别调用这两个函数
#include <stdio.h> 声明函数 int main() { void print_star(); void print_message(); 调用函数 print_star(); print_message(); print_star(); 定义函数 return 0; } void print_star() { printf(“******************\n”); } void print_message() { printf(“ How do you do!\n”); }
#include <stdio.h> int main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); return 0; } void print_star() { printf(“******************\n”); } void print_message() { printf(“ How do you do!\n”); }
C语言要求,在程序中用到的所有函数, 必须“先声明,再定义,后使用”
7.2 怎样定义函数 函数名字、函数返回值类型、函数实现 的功能以及参数的个数与类型 函数名字——以便以后按名调用
函数类型——函数返回值的类型 函数参数的名字和类型——以便在调用 函数时向它们传递数据 函数的功能——函数的具体实现
定义函数的方法1.定义无参函数
函数名后面的括号中是空的,没有任何参数类型名 函数名()
类型名 函数名(void){
{函数体 }
函数体}
2.定义有参函数类型名 函数名(形式参数表列)
{函数体 }
3. 定义空函数:函数体是空的类型名 函数名( ){ }
在编写程序的开始阶段,先用空函数占 住一个位置,只是这些函数暂时还未编 写好,这样做,以后扩充
新功能方便, 对程序结构影响不大。
7.3 调用函数定义函数的目的是为了调用函数。
7.3.1函数调用的形式 函数调用的一般形式为:
函数名(实参表列) 如果是调用无参函数,则“实参表列” 可以没有,但括号不能省略 如果实参表列包含多个实参,则各参数 间用逗号隔开
按函数调用在程序中出现的形式和位置 来分,可以有以下3种函数调用方式:
1. 函数调用语句 把函数调用单独作为一个语句
如printf_star(); 这时不要求函数带回值,只要求函数完 成一定的操作
2. 函数表达式
函数调用出现在另一个表达式中如c=max(a,b);
这时要求函数带回一个确定的值以参加 表达式的运算
3. 函数参数 函数调用作为另一函数调用时的实参 如m=max(a,max(b,c)); 其中max(b,c)是一次函数调用,它的 值作为max另一次调用的实参
实参和形参间的数据传递 在调用有参函数时,主调函数和被调用函 数之间有数据传递关系 定义函数时函数名后面的变量名称为“形 式参数”(简称“形参”) 主调函数中调用一个函数时,函数名后面 参数称为“实际参数”(简称“实参”)
上一篇:辛亥革命资料
下一篇:管理运筹学试卷和答案2