###C语言程序设计-----C语言学习(9)#函数基础
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。

一. 基础知识的学习
1.函数的定义
函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。库函数由C语言系统提供定义,编程时只要直接调用即可,例如:scanf(),printf()等为库函数。自定义函数由用户自己定义,例如:自己定义的cylinder(),fact()。
函数定义的一般形式为:
函数类型 函数名(形式参数表)
{
函数实现过程
}
(1)函数首部
函数首部由函数类型,函数名和形式参数表组成,位于函数定义的第一行。且函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
例如:
double cylinder(double r,double h)
表明函数的类型是double,也即函数的结果类型;函数名是cylinder;函数有两个形参r和h,它们的类型都是double,在cylinder()函数被调用时,这两个形参的值将由主调函数给出。
(2)函数体
函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果。
2.函数的调用
(1)函数调用过程
任何C程序执行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原来暂停的位置继续执行。
(2)函数调用的形式
函数调用的一般形式为:
函数名 (实际参数表)
这里实际参数可以是常量,变量和表达式。
对于实现计算功能的函数,函数调用通常出现在两种情况下:
a.赋值语句
volume=cylinder(radius,height);
b.输出函数的实参
printf("%f",cylinder(radius,height);
(3)参数传递
函数定义时,位于其首部的参数被称为形参,主调函数的参数被称为实参,形参除了能接受实参的值外,使用方法与普通变量类似。形参与实参必须一一对应,两者数量相同,类型尽量一致。程序运行遇到函数调用时,实参的值依次传给形参,这就是参数传递。
(4)函数结果返回
函数结果返回的形式如下:
return 表达式;
注意:
a.return语句的作用有两个:一是结束函数的运行;二是带着运算结果(表达式的值)返回主调函数。
b.return语句只能返回一个值,如果函数产生了多个运算结果,将无法通过return返回。
(5)函数原型声明
函数声明的目的主要是说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。函数声明的一般格式为:
函数类型 函数名(参数表);
注意:函数声明是一条C语句,而函数定义时的函数首部不是语句,后面不能跟分号。
二. 具体问题知识运用
问题1: 计算圆柱体的体积。输入圆柱的高和半径,求圆柱体积volume=丌*r*r*h。要求定义和调用函数cylinder(r,h)计算圆柱体的体积。
源程序:
#include <stdio.h>
double cylinder(double r, double h); //函数声明
int main()
{double height,radius,volume;printf("Enter radius and height:");scanf("%lf %lf", &radius, &height);volume=cylinder(radius,height); //调用函数,返回值赋给volume printf("volume=%.3f\n",volume); //输出圆柱体积 return 0;} double cylinder(double r, double h) //函数首部 {double result;result=3.1415926*r*r*h; //计算圆柱体积 return result; //返回结果 }
问题2:计算五边形的面积。将一个五边形分割成3个三角形,输入这些三角形的7条边长,计算该五边形的面积。要求定义和调用函数area(x,y,z)计算边长x,y,z的三角形面积。
源程序:
#include <stdio.h>
#include <math.h>
double area(double x, double y, double z); //函数声明
int main()
{double a1,a2,a3,a4,a5,a6,a7,s;printf("Please input 7 side lengths in the order a1 to a7:\n");scanf("%lf%lf%lf%lf%lf%lf%lf", &a1, &a2, &a3, &a4, &a5, &a6, &a7);s=area(a1,a5,a6)+area(a4,a6,a7)+area(a2,a3,a7); //调用三次area函数 printf("The area of the Pentagon is %.2f\n", s);return 0;} double area(double x, double y, double z) //函数首部 {//使用海伦-秦九韶公式计算三角形面积的函数 double p=(x+y+z)/2;return sqrt(p*(p-x)*(p-y)*(p-z));}
感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。
相关文章:
###C语言程序设计-----C语言学习(9)#函数基础
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 基础知识的学习 1.函数的定义 函数是一个完成特定工作的独立程序模块&…...
Dockerfile文件参数配置和使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Java实现婚恋交友网站 JAVA+Vue+SpringBoot+MySQL
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…...
React16源码: React中详解在渲染阶段Suspend的源码实现
Suspend 挂起详解 1 )概述 在react的更新过程当中,它的任务是可以被挂起的,也就是 Suspend关于 Suspend 字面意思就是挂起在某次更新的任务更新完成之后,暂时不提交 在 react更新中,分为两个阶段,首先是re…...
mac电脑风扇控制软件:Macs Fan Control Pro for mac 激活版
Macs Fan Control 是一款专门为 Mac 用户设计的软件,它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度,以提高设备的散热效果,减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温度和…...
easyexcel解析跨多行的数据
在使用easyexcel解析excel文件的时候,存在某列横跨多行,那么存在解析出的对象的某些属性是没有值的,那么我们要怎么处理呢?代码如下 定义实体对应excel文件 public class EtcParkingReconciliationDailyImportModel implements S…...
双目相机立体匹配基础
双目匹配就是用左相机和右相机去拍摄同一个点,目的是找到三维世界的同一个点,也就是在左相机和右相机中的成像点之间的像素差(视差),根据视差去求解深度,那么找到左相机点到右相机的同一个对应点这个过程就…...
【图论】网络流
网络流目前只整理模板,学习的话这篇博客可能不太适合 代码参考下方博客,加了一些自己的注释 算法学习笔记(28): 网络流究级的最大流算法:ISAP与HLPP FF 和 EK 仅用作理解代码,赛时请使用 Dinic 或 ISAP 下文建图方式都基于链式…...
【Matplotlib】figure方法 你真的会了吗!?
🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…...
[C++]继承(续)
一、基类和派生类对象赋值转换 在public继承时,父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用,我们认为是天然的,中间不产生临时对象,也叫作父子类赋值兼容规则(切割/切片ÿ…...
恒创科技:服务器内存不足影响大吗?
服务器在为网站、应用程序和在线服务提供支持方面发挥着关键作用。这些服务器需要提供最佳性能,以确保正常无缝的用户体验,而RAM是显著影响服务器性能的关键配置之一。 RAM 是一种随机存取存储器,计算机和服务器使用它来临时存储正在使…...
深入理解网络通信和TCP/IP协议
目录 计算机网络是什么? 定义和分类 计算机网络发展简史 计算机网络体系结构 OSI 七层模型 TCP/IP 模型 TCP/IP 协议族 TCP/IP 网络传输中的数据 地址和端口号 MAC地址 IP 地址 端口号 为什么端口号有65535个? 综述 TCP 特性 TCP 三次握…...
Open CASCADE学习|分割曲线
1、通过参数进行分割 分别获得曲线的 FirstParameter 和 LastParameter ,然后对参数进行分割,获得n个ui,并对每个ui调用D0(获得这个点的坐标值)或D1(获得这个点的坐标值和切向量)。这个方法的优…...
vulhub中Adminer远程文件读取漏洞复现(CVE-2021-43008)
Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。 在其版本1.12.0到4.6.2之间存在一处因为MySQL LOAD DATA LOCAL导致的文件读取漏洞。 参考链接: https://gith…...
MOS管驱动电流估算-Qg参数
MOS管驱动电流估算 例:FDH45N50F如下参数: 有人可能会这样计算: 开通电流 带入数据得 关断电流 带入数据得 于是乎得出这样的结论,驱动电流只需 250mA左右即可。仔细想想这样计算对吗? 这里必须要注意这样一个条件细…...
Vision Transfomer系列第一节---从0到1的源码实现
本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 这里写目录标题 准备逐步源码实现数据集读取VIt模型搭建hand类别和位置编码类别编码位置编码 blocksheadVIT整体 Runner(参考mmlab)可视化 总结 准备 本博客完成Vision Transfomer(VIT)模型的搭建和flowers数…...
【CSS + ElementUI】更改 el-carousel 指示器样式且隐藏左右箭头
需求 前三条数据以走马灯形式展现,指示器 hover 时可以切换到对应内容 实现 <template><div v-loading"latestLoading"><div class"upload-first" v-show"latestThreeList.length > 0"><el-carousel ind…...
Ubuntu 22.04 上安装和使用 Go
1.下载 All releases - The Go Programming Language //https://golang.google.cn/dl/wget https://golang.google.cn/dl/go1.21.6.linux-amd64.tar.gz 2.在下载目录下执行,现在,使用以下命令将文件提取到 “/usr/local ” 位置 sudo tar -C /usr/…...
ES6-const
一、基本用法 - 语法:const 标识符初始值;注意:const一旦声明变量,就必须立即初始化,不能留到以后赋值 - 规则:1.const 声明一个只读的常量,一旦声明,常量的值就不能改变2.const 其实保证的不是变量的值不…...
Android消息通知Notification
Notification 发送消息接收消息 #前言 最近在做消息通知类Notification的相关业务,利用闲暇时间总结一下。主要分为两部分来记录:发送消息和接收消息。 发送消息 发送消息利用NotificationManager类的notify方法来实现,现用最普通的方式发…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
