c语言第十天笔记

news2024/9/21 14:47:10

函数的概述

函数:

实现一定功能的,独立的代码模块。我们的函数一定是先定义,后使用。

使用函数的优势:

1. 我们可以通过函数提供功能给别人使用。当然我们也可以使用别人提供的函数,减少代码量。

2. 借助函数可以减少重复性的代码。

3. 实现结构化(模块化)程序设计思想: 结构化程序设计思想:将大型的任务功能划分为相互独立的小型的任务模块来设计。

函数是C语言程序的基本组成单元:

函数的分类C语言程序是由一个(必然是main函数)或多个函数组成。

函数的分类

从函数实现的角度:

库函数:C语言标准库实现并提供使用的函数,比如常见的有printf(),scanf()

用户自定义函数:需要程序员自行实现,开发中大部分都是这样的函数

从函数形式的角度:

无参函数:函数调用时,无需传参,可配可不配返回值。

有参函数:函数调用时,需要参数传递数据,经常需要配套返回值使用。

相关概念

主调函数:主动去调用其他函数的函数。

被调函数:被调用的函数

很多时候,一个函数既可以是主调函数,也可以是被调函数。这种情况一般出自自定义函 数。

函数的定义

语法

函数首部:

返回类型:函数返回值的类型

函数名:函数的名称,遵循标识符命名(使用英文字母、数字、_、$,不能以数字开头,建议小写 +下划线命名法)

形参列表:用于接收主调函数传递的数据,如果有多个用" , "分隔,且每一个形参都需要指定类 型。

面试题:

注意:

函数类型标识符变量类型说明符相同,它表示返回的函数值的类型。

在C语言中还可以定义无类型(即void类型)的函数,这种函数不返回函数值,只是完成某种功 能。

如果省略函数的类型标识符,则默认为是int型。

函数中返回语句的形式为 return(表达式);或 return 表达式;其作用是将表达式的值作为函数值返 回给调用函数。其中表达式的类型应与函数类型一致。

如果"形参表列"中有多个形式参数,则它们之间要用" , "分隔。

如果形参表中有多个形参,即使它们的类型是相同的,在形参表中也只能逐个进行说明。 fun1(in t a,int b){}

一个完整C程序中的所有函数可以放在一个文件中,也可以放在 多个文件中。

案例

案例1:

案例2:

形参和实参

概念

形参(形式参数):

函数定义时指定的参数,形参是用来接收数据的,函数定义时,系统不会为形参申请内存,只有当函 数调用时,系统才会为形参申请内存,用于存储实际参数,并且当函数返回,系统会自动回收为形参 申请的内存资源。(本质上所有函数都有return,只不过当我们的函数返回类型是void的时候,return 关键字被省略了)

实参(实际参数):

函数调用时主调函数传递的数据参数(常量、变量、表达式..,只要有确定的值),实参是传递的 数据。

实参和形参必须类型相同。若不同时,按赋值规定自动进行类型转换。

在C语言中,参数传递遵循 单向值传递 ,实参只是将自身的值传递给形参,而不是实参本身。形参 的值的改变不会影响实参。

实参与形参在内存中占据不同的内存空间,尽管可能实参和形参名称是一样的。

案例2:

函数的返回值

若不需要返回值,函数中可以没有return语句。

一个函数中可以有多个return语句,但任一时刻只有一个return语句被执行。

被调函数返回给主调函数的结果数据(可以是变量、常量、表达式,只要是有确定值即可。)

返回值类型一般情况下需要和函数中return语句返回的数据类型保持一致,如果不一致,以函数定 义时指定的返回类型为标准。也就是返回值类型和实际返回值可以存在自动类型转换或者强制类型 转换的关系。

案例1:

案例2:

案例3:

函数的调用

调用方式

1. 函数语句: test(); int result = max(2,4);

2. 函数表达式: 4 + max(2,4);

3. 函数参数: printf("%d",max(2,4))

在一个函数中调用另一个函数须具备以下条件

① 被调用的函数必须是已经定义的函数;

② 若使用库函数,应在本文件开头用#include包含;

③ 若使用用户定义的函数,而用户函数又在主调函数的后面,则应在主调函数中对被调用的函数进 行声明。声明的作用是把函数名、函数参数的个数和类型等信息通知编译系统,以便在遇到函数时, 编译系统能正确识别函数,并检查函数调用的合法性。

函数声明

函数调用时,往往要遵循 先定义后调用 ,但如果我们对函数的调用操作出现在函数的定义之前,则需 要对函数进行声明。

函数声明的作用:

是把函数名、函数参数的个数和返回类型等信息通知给编译系统,以便于在遇到函数时,编译系统能 正确识别函数,并检查函数调用的合法性。

声明的方式:

函数首部后加上分号;

函数首部后加上分号,可省略形参名,但不能省略参数类型。

函数的嵌套调用

函数不允许嵌套定义,但允许嵌套调用。

嵌套调用:在被调函数内有去主动去调用其他函数,这样的函数调用方式,称之为嵌套调用;

章节作业

编程题

1. 编写一个函数,通过输入球的半径,返回球的体积;

2. 编写一个函数,通过输入一个数字字符,返回该数字

3. 编写一个函数,输入四个数据分别表示2个点的x,y坐标,返回两点之间的距离;

4. 编写一个函数,通过参数输入一个整型数,返回该数各位上数字的平方和;

5. 编写一个函数,通过参数输入x的值,计算如下的数学函数值,当 x>5时, f(x) = 4x+7;否则 f(x) = -2x+3,返回结果值

6. 设计一个函数,用来求出多个数据的平均值;

7. 设计一个函数,用来查找一个字符串中某个字符的位置;

8. 设计一个函数,把一个整型数字转成对应的字符串格式

9. 设计一个函数,统计字符串中大写字母的个数

10. 设计函数,实现strcmp 的功能;

11. 编写函数,用于判断输入的字符是不是个数字。是返回1,不是返回0.

12. 设计一程序,实现一个简单的计算器。 要求:有菜单函数 和加、减、乘、除的函数 主函数调用这些函数实现程序的功能.要求菜单函数能 够输出如下的界面

1、加法 2、减法 3、乘法 4、除法 0.退出

13. 设计函数实现冒泡排序;

思考题【选做】

14. 编写一个函数,将数组中的数据首尾互换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《学会 SpringMVC 系列 · 参数解析器 ArgumentResolvers》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

HQChart实战教程76-自定义Y轴刻度线

HQChart实战教程76-自定义Y轴刻度线 Y轴刻度线效果图HQChart插件源码地址步骤1. 注册事件2.回调事件eventdataobj数据说明完整实例源码Y轴刻度线 在K线图上,通过绘制一些特殊的刻度线来标识状态。我们可以通过SetOption里面设置,也可以通过回调函数动态设置。本教程是使用回…

微服务之SpringAMQP详解

目录 前言 1. 概述 2. Basic Queue简单队列模型 2.1 消息发送 2.2 消息接收 2.3 总结 3. WorkQueue模型 3.1 消息发送 3.2 消息接收 3.3 测试 3.4 消费预取限制 3.5 总结 4. 发布、订阅 5. Fanout 5.1 声明队列和交换机 5.2 消息发送 5.3 消息接收 5.4 测试 5…

SpringBoot集成阿里百炼大模型(初始demo) 原子的学习日记Day01

文章目录 概要下一章SpringBoot集成阿里百炼大模型(多轮对话) 原子的学习日记Day02 整体架构流程技术名词解释集成步骤1,选择大模型以及获取自己的api-key(前面还有一步开通服务就没有展示啦!)2&#xff0c…

遗传算法与深度学习实战——生命模拟与进化论

遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等,试图模…

KMZ格式详解,javascript写入读取KMZ示例

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

myeclipse 2020 下载 安装 汉化

1,解压 myeclipse 2020 压缩包到当前目录下: 点击此处蓝色字体下载压缩包 提取码 k3x9 2,鼠标右键 点击 myeclipse 2020.exe 选择 以管理员身份运行 : 3,等待加载: 4,点击 Next : 5…

【数学建模】2024华数杯A题思路(已完成)

视频预览: 2024华数杯A题已完成 作品连接:https://mbd.pub/o/bread/ZpmWmJxu 文章目录 一、题目二、分析三、代码示例 一、题目 机器臂是一种自动化装置,广泛应用于工业生产、精密操作、危险环境作业和物流等领域。关节角路径的优化设计对于…

Transformer在生成细胞数据上的应用

来自:scTranslator: A pre-trained large generative model for translating single-cell transcriptome to proteome 工程地址:https://github.com/TencentAILabHealthcare/scTranslator 在scTranslator中,有3个阶段:paired bu…

【xilinx】XCZU1CG-1SBVA484I FPGA 的 VCC_PSBATT 引脚的正确电压范围是多少?

我正在做一个涉及 XCZU1Cg-1SBVA484I FPGA IC 的项目。对于 PSBATT 部分,根据 DS925 文档,提到 VCC_PSBATT 电压范围为 1.2V ~ 1.5V。但在同一文档中,注释部分规定:Vcc_psbatt 最高可接受 1.89V。 根据 UG1085 文档,使…

HarmonyOS 习题(二)

1、在类Web开发范式自定义组件创建后,加入到Page组件树时,会触发以下哪一项回调。 A)Onlnit B)OnAttached C)OnLayoutReady D)OnDetached 答案:B 分析: onlnit:自定义组件初始化生命周期回调&a…

HTML常用标签和CSS的运用

目录 1.HTML标签 1.1 文档结构标签 1.2 文本格式标签 1.3 列表标签 1.4 链接和媒体标签 1.5 表格标签 1.6 表单标签 1.7 分区和布局标签 1.8 元数据标签 2.css样式 2.1 字体样式 2.2 文本样式 2.3 背景样式 2.4 边框样式 2.5 间距样式 2.6 宽度和高度 2.7 显示…

NLP——Transfromer 架构详解

Transformer总体架构图 输入部分:源文本嵌入层及其位置编码器、目标文本嵌入层及其位置编码器 编码器部分 由N个编码器层堆叠而成 每个编码器层由两个子层连接结构组成 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接 第二个子层连接结构包…

音质提升秘籍:专业音频剪辑软件汇总

现在欣赏传输音频文件比以前简单多了,这些音频的质量也影响了听众的体验与感受。所以使用一些靠谱的音频剪辑工具处理音频能让你的音频文件呈现更好的效果。 1.福昕音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这是一款电脑端软件。别看…

MySQL查询最近7天的分组数据,无则补零

需求是:有个查询最近7天的折线图,这个就要求没有数据就要补0 现在表名为:wo_work_order 时间字段为:create_time SQL如下: SELECTDATE_FORMAT( a.timeDay, %Y-%m-%d ) AS day,IFNULL( b.count, 0 ) AS count FROM(S…

5.怎么使用Element ui来做一个前端登录页面

找到Layout 布局 他通过基础的 24 分栏,迅速简便地创建布局。 找一个对齐方式 这个就不错,找到对应的代码 这个 复制进入idea 引入我们的图片和文字 我这里图片有点问题 然后我再添加一条分割线 加入表单校验 把里面的代码同上加入idea 结果 对表单内容进行调整 …

半导体设备SAP实施的主要特点有哪些?

在半导体这一高度技术密集且竞争激烈的行业中,企业的高效运营和精准管理成为了决胜市场的关键。SAP作为全球领先的企业管理软件提供商,其半导体设备解决方案以其独特的功能和特点,为半导体企业带来了显著的运营优化和竞争力提升。本文将跟大家…

C# 类型转换

隐式(implicit)类型转换 1.不丢失精度的转换 2.显示(explicit)类型的转换 有可能丢失精度的转换 使用convert转换 ToString方法:将数值类型转换成字符串型

【Deep-ML系列】Linear Regression Using Normal Equation(正规方程求解线性回归)

题目链接:Deep-ML import numpy as np def linear_regression_normal_equation(X: list[list[float]], y: list[float]) -> list[float]:X np.array(X)y np.array(y).reshape(-1, 1)x_transpose X.Ttheta np.linalg.inv(x_transpose.dot(X)).dot(x_transpose…

K8s部署篇之手动部署二进制高可用集群架构

一、系统环境初始化 一)架构设计 所有节点都操作:3个master(etcd集群三个节点)和2个node 1、K8s服务调用如图 2、各组件说明 1、API Server 供Kubernetes API接口,主要处理 REST操作以及更新ETCD中的对象所有资源增删…