第7章 用函数实现模块化程序设计

简介: 第7章 用函数实现模块化程序设计

7.1 为什么要用函数

在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能。一个C程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用。

7.2 怎样定义函数

定义函数包括以下几个内容:

(1)指定函数的名字,以便以后按名调用。

(2)指定函数的类型,即函数返回值的类型。

(3)指定函数的参数的名字和类型。

(4)指定函数应当完成的操作,也就是函数的功能

7.3 调用函数

1.形式参数和实际参数

在定义函数时函数名后面括号中的变量名称为“形式参数”(简称“形参”)或“虚拟参数”。在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”(简称”实参“)。

7.3.1 函数的返回值

(1)函数的返回值是通过函数中的return语句获得的。

(2)函数值的类型。

int max(float x,float y) //函数值为整型

char letter(char c1,char c2) //函数值为字符型

double min(int x,int y) //函数值为双精度型

(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。

7.4 对被调用函数的声明和函数原型

例7.4 输入两个实数,用一个函数求出它们之和。

编写程序:

#include<stdio.h>
int main(){
    float add(float x,float y);
    float a,b,c;
    printf("Please enter a and b:");
    scanf("%f,%f,&a,&b");
    c=add(a,b);
    printf("sum is %f\n",c);
    return 0;
}
float add(float x,float y){
    float z;
    z=x+y;
    return(z);
}

7.6 函数的递归调用

直接或间接地调用该函数本身,称为函数的递归调用。

int f(int x){
    int y,z;
    z=f(y);   //在执行f函数的过程中又要调用f函数
    return(2*z);
}
相关文章
|
C语言
【C语言】利用数组处理批量数据(一维数组和二维数组)
【C语言】利用数组处理批量数据(一维数组和二维数组)
242 1
|
弹性计算 Prometheus 运维
一文详解阿里云可观测体系下标签最佳实践
在当今数字化转型加速的时代,企业 IT 系统的复杂度与日俱增,如何高效地管理和监控这些系统成为了一项挑战。阿里云作为全球领先的云计算服务商,提供了一整套全面的可观测性解决方案,覆盖从业务、端侧(小程序、APP、H5 等)、应用、中间件、容器/ECS 等全栈的监控体系,旨在帮助企业构建强大而灵活的可观测性体系。其中,标签(Tag)作为一种核心组织和管理手段,在阿里云可观测体系中扮演着至关重要的角色。本文将深入探讨阿里云可观测系列产品中标签的应用,以及如何运用标签在阿里云可观测产品体系下进行体系化建设并给出相关最佳实践。
1104 195
|
机器学习/深度学习 前端开发 机器人
如何开始定制你自己的大型语言模型
2023年,大型语言模型发展迅速,规模更大,性能更强。用户能否定制自己的模型取决于硬件资源。需在功能和成本间找到平衡,可以选择高性能(如40B+参数,适合专业用途,需强大GPU,成本高)或低性能(如7B参数,适合学习和简单应用,GPU成本较低)模型。训练模型可借助HuggingFace的Transformers库,定义数据集并进行训练。训练好的模型可使用Ollama和Open Web UI部署。具备适当GPU是入门基础。
416 2
|
算法 大数据 Go
Go文件操作:掌握Go的文件读写与操作技巧
本文介绍了Go语言的文件操作功能,包括文件的打开、读写和关闭。Go语言通过`os`和`io`包提供了丰富的文件操作接口,使开发者能够轻松实现文件的读写和管理。文章详细讲解了核心概念、具体操作步骤和代码示例,并探讨了实际应用场景和未来发展趋势。
209 4
|
数据挖掘 定位技术 API
Python GIS神器geopandas 1.0版本来了
Python GIS神器geopandas 1.0版本来了
365 4
|
存储 Oracle 关系型数据库
OceanBase有什么优势?
【8月更文挑战第12天】OceanBase有什么优势?
755 3
利用 GitHub Actions 自动化你的软件开发流程
在快速发展的软件开发环境中,自动化对于提升效率与质量至关重要。GitHub Actions 作为一款强大的工具,能帮助开发者实现从自动运行测试到部署应用等工作的自动化。本文详细介绍了 GitHub Actions 的核心概念、设置方法及实际应用示例,如自动测试、部署和合并 Pull Requests,助力提升开发流程的自动化水平。
|
监控 关系型数据库 MySQL
MySQL如何快速获取binlog的开始时间和结束时间
【8月更文挑战第17天】在MySQL中快速获取binlog的开始与结束时间可通过多种途径:1) 使用`mysqlbinlog`结合`head`和`tail`命令查看单个或多个binlog文件的时间范围;2) 查询`information_schema.binlog_events`表获取近似的开始与结束时间戳;3) 利用第三方工具如Percona Toolkit的`pt-mysql-summary`获取binlog信息。选择适当方法前应考虑操作环境及数据安全性。
1250 2
|
存储 边缘计算 物联网
未来数据存储技术发展趋势分析
随着数字化时代的到来,数据量不断增长,传统存储技术面临挑战。本文探讨未来数据存储技术的发展趋势,包括分布式存储、云存储、边缘计算等新兴技术的应用前景。
|
机器学习/深度学习 自然语言处理 搜索推荐
常用的相似度度量总结:余弦相似度,点积,L1,L2
相似性度量在机器学习中起着至关重要的作用。这些度量以数学方式量化对象、数据点或向量之间的相似性。理解向量空间中的相似性概念并采用适当的度量是解决广泛的现实世界问题的基础。本文将介绍几种常用的用来计算两个向量在嵌入空间中的接近程度的相似性度量。
1305 1

热门文章

最新文章