###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));}

 

感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。 

 

 

 

 

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

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

相关文章

GPT-1, GPT-2, GPT-3, GPT-3.5, GPT-4论文内容解读

目录 1 ChatGPT概述1.1 what is chatGPT1.2 How does ChatGPT work1.3 The applications of ChatGPT1.3 The limitations of ChatGPT 2 算法原理2.1 GPT-12.1.1 Unsupervised pre-training2.1.2 Supervised fine-tuning2.1.3 语料2.1.4 分析 2.2 GPT-22.3 GPT-32.4 InstructGPT…

如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏

文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…

面试题:SpringBoot 在打包部署的时候打包成 jar 和 war 有什么不同?

文章目录 前言jar包和war包的区别一、打包成jar二、打包成war包形式 前言 首先给大家来讲一个我们遇到的一个奇怪的问题: 我的一个springboot项目&#xff0c;用mvn install打包成jar&#xff0c;换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行&#xff0c;没…

Unable to access SFTP sub-system, operation failed

解决方法&#xff1a; 1. 编辑 /etc/ssh/sshd_config 配置文件 2. 重启SSHD服务 service sshd restart 还有一种特殊情况&#xff0c;也是本文重点要介绍的&#xff1a; 当启用sftp-server后&#xff0c;使用FlashFXP等工具传输文件的时候&#xff0c;仍然失败&#xff0c;…

『运维备忘录』之 Vim 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

MySQL进阶45讲【10】MySQL为什么有时候会选错索引?

1 前言 前面我们介绍过索引&#xff0c;在MySQL中一张表其实是可以支持多个索引的。但是&#xff0c;写SQL语句的时候&#xff0c;并没有主动指定使用哪个索引。也就是说&#xff0c;使用哪个索引是由MySQL来确定的。 大家有没有碰到过这种情况&#xff0c;一条本来可以执行得…

vue2 自定义指令 v-highlight 文本高亮显示分享

简单分享一个文本高亮显示的自定义指令&#xff0c;主要分两部分&#xff1a; 1、代码实现&#xff1a;在 main.js 文件中添加一个自定义指令&#xff0c;实现搜索时文本高亮显示&#xff0c;代码如下&#xff1a; const highlightText (el, searchText) > {const textCo…

Linux--- vim详解

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 “学如逆水行舟&#xff0…

大数据企业应用场景分析

目录 一、企业分析 1.1 企业领域维度分析 1.2 技术服务型维度分析 1.3 细分领域维度分析 二、大数据应用场景 2.1 数据分析 2.2 智能推荐 2.3 产品/流程优化 2.4 异常监测 2.5 智能管理 2.6 人工智能和机器学习 三、总结 前言&#xff1a;想讲清楚大数据应用对企业…

响应式开发如何设置断点,小屏幕界面该如何显示(有动图)

Hi&#xff0c;我是贝格前端工场&#xff0c;本期分享响应式开发&#xff0c;如何设置屏幕断点&#xff0c;pc页面布局到了移动端之后该如何布局的问题&#xff0c;微软也提供了设置屏幕断点的动图演示&#xff0c;非常直观。 一、什么是响应式开发&#xff0c;为何要设置屏幕断…

常用存储器

目录 一、存储器的种类 二、易失性存储器&#xff08;RAM&#xff09; 1. DRAM &#xff08;1&#xff09;SDRAM &#xff08;2&#xff09;DDR SDRAM 2. SRAM 3. DRAM与SRAM的应用场合 三、非易失性存储器 1. ROM &#xff08;1&#xff09;MASK ROM &#xff08;2…

YoloV8改进策略:Neck改进:HAM混合注意力机制改进YoloV8|多种改进,多种姿势涨点|代码注释详解

摘要 HAM通过快速一维卷积来缓解通道注意机制的负担,并引入通道分离技术自适应强调重要特征。HAM作为通用模块,在CIFAR-10、CIFAR-100和STL-10数据集上实现了SOTA级别的分类性能。 论文链接:https://www.sciencedirect.com/science/article/abs/pii/S0031320322002667?vi…

2024年【天津市安全员B证】考试报名及天津市安全员B证最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员B证考试报名根据新天津市安全员B证考试大纲要求&#xff0c;安全生产模拟考试一点通将天津市安全员B证模拟考试试题进行汇编&#xff0c;组成一套天津市安全员B证全真模拟考试试题&#xff0c;学员可通过…

【产品升级】SmartPipe升级到版本2.0

在近一个月的攻关和测试下&#xff0c;SmartPipe软件轴线自动识别算法的性能大幅提升&#xff0c;鲁棒性和稳定性进一步增强。近一年来客户累计反馈的多种复杂管路&#xff08;包括带有支管管路、带有压瘪段管路、推弯管、装配管、带有复杂孔洞管路等&#xff09;现在均能够正确…

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 PySpark SQL 基础 PySpark SQL与Hive的异同 Hive和Spark 均是:“分…

数据挖掘实战-基于决策树算法构建北京市空气质量预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

ChatGPT Plus如何升级?信用卡付款失败怎么办?如何使用信用卡升级 ChatGPT Plus?

ChatGPT Plus是OpenAI提供的一种高级服务&#xff0c;它相较于标准版本&#xff0c;提供了更快的响应速度、更强大的功能&#xff0c;并且用户可以优先体验到新推出的功能。 尽管许多用户愿意支付 20 美元的月费来订阅 GPT-4&#xff0c;但在实际支付过程中&#xff0c;特别是…

【面试深度解析】腾讯音乐校招 Java 后端一面:SpringBoot工作机制、缓存雪崩、数据一致性、MySQL索引失效(下)

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后&#xff0c;我们会看到bingo_web项目其实是一个文件夹&#xff0c;我们进入到文件夹内部就会发现一些目录和文件&#xff0c;我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录&#xff0c;项目运行的依赖包…

【漏洞库】O2OA系统

O2OA invoke 后台远程命令执行漏洞 CNVD-2020-18740 漏洞描述 O2OA是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA系…