###C语言程序设计-----C语言学习(9)#函数基础

news/2024/4/19 17:27:47/

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

 

 

一.  基础知识的学习 

 

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.ppmy.cn/news/1343691.html

相关文章

【Java】IoC注入的三种方式

1、根据类型注入 Controller public class UserController {public void sayHi(){System.out.println("Hi,controller");} } SpringBootApplication public class IocSpringApplication {public static void main(String[] args) {ApplicationContext context Spr…

[Angular 基础] - 数据绑定(databinding)

[Angular 基础] - 数据绑定(databinding) 上篇笔记&#xff0c;关于 Angular 的渲染过程及组件的创建&简单学习&#xff1a;[Angular 基础] - Angular 渲染过程 & 组件的创建 Angular 之中的 databinding 是一个相对而言更加复杂&#xff0c;以及我个人觉得相对而言比…

PyTorch 2.2 中文官方教程(十五)

&#xff08;beta&#xff09;计算机视觉的量化迁移学习教程 原文&#xff1a;pytorch.org/tutorials/intermediate/quantized_transfer_learning_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 提示 为了充分利用本教程&#xff0c;我们建议使用这个C…

C#如何实现一个输入框输入,匹配提示数据

在C#中可以使用AutoCompleteStringCollection类来实现输入框的自动完成功能。 首先需要创建一个包含所有候选项的字符串集合&#xff08;List&#xff09;或者从文件、数据库等地方获取到这些候选项。然后将该集合传递给TextBox控件的AutoCompleteCustomSource属性。 下面是一…

springboot在线文档的集成方式

为了使用Swagger 3&#xff0c;您需要进行以下步骤来将其集成到您的项目中&#xff1a; 添加Swagger依赖项&#xff1a;在您的项目的构建文件中&#xff0c;例如pom.xml&#xff08;如果您的项目是基于Maven&#xff09;&#xff0c;添加Swagger库的依赖项。您可以在Maven中添…

SpringBoot实战项目第一天

环境搭建 后端部分需要准备&#xff1a; sql数据库 创建SpringBoot工程&#xff0c;引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构&#xff0c;并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…

Vue 3D轮播插件vue-carousel-3d(禁止滑动方法)

video 1.安装 npm install -S vue-carousel-3d2.在main.js全局引入&#xff1a; import Carousel3d from vue-carousel-3d; Vue.use(Carousel3d);3.或者直接在使用页面引入省略了上一步 import { Carousel3d, Slide } from vue-carousel-3d components: {Carousel3d,Slide },…

蓝桥杯Web应用开发-display属性

display 属性 专栏持续更新中 display 属性可以用来设置元素在页面上的排列方式&#xff0c;也可用来隐藏元素。 display 属性值的说明如下表所示。 属性值说明block元素以块级方式展示。inline元素以内联方式展示。inline-block元素以内联块的方式展示。none隐藏元素。 b…

golang 创建unix socket http服务端

服务端 package mainimport ("fmt""net""net/http""os" )func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("hello"))})http.HandleFunc("/world", …

C语言函数递归详解

递归是什么&#xff1f; 递归&#xff0c;顾名思义&#xff0c;就是递推和回归。 递归是一种解决问题的方法&#xff0c;在C语言中&#xff0c;递归就是函数自己调用自己。 #include <stdio.h> int main() {printf("hehe\n");main();//main函数中⼜调⽤了main…

非常好看的CSS加载中特效,引用css文件既可用

非常好看的CSS加载中特效 demo效果源码&#xff1a; <!DOCTYPE html5> <head><link rel"stylesheet" type"text/css" href"demo.css"/><link rel"stylesheet" type"text/css" href"loaders.css&…

C# 使用 MailKit 发送邮件(附demo)

C# 使用 MailKit 发送邮件&#xff08;附demo&#xff09; 介绍安装包&#xff08;依赖&#xff09;案例简单代码属性介绍&#xff1a;MailboxAddress属性介绍&#xff1a;BodyBuilderSMTP 服务器端口SSL的案例&#xff1a;非SSL&#xff1a; 介绍一下SMTP 介绍 MailKit 是一…

100天精通Python(实用脚本篇)——第115天:基于selenium实现反反爬策略之隐藏浏览器指纹特征

文章目录 专栏导读1. 什么是浏览器指纹?2. 爬虫隐藏浏览器指纹特征的好处?3. 手动打开浏览器指纹情况4. 无界面模式打开浏览器5. 脚本隐藏浏览器指纹特征专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一…

【c/python】GtkGrid

一、GtkGrid GtkGrid 是 GTK (GIMP Toolkit) 中的一个基础容器构件&#xff08;widget&#xff09;&#xff0c;它可以用来安排其他构件在一个灵活的多行多列的网格中。每个加入网格的构件都可以占据一个或多个行和列。由于 GtkGrid 提供了在二维空间中安排构件的方式&#xf…

uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面

1. pages下创建三个不同用户身份的“我的”页面。 显示第几个tabbar&#xff0c;0是管理员 1是财务 2是司机 2. 在uni_modules文件夹创建底部导航cc-myTabbar文件夹&#xff0c;在cc-myTabbar文件夹创建components文件夹&#xff0c;在components文件夹创建cc-myTabbar.vue组件…

基于MIDI 与USB 接口,使用《完美钢琴》安卓版连接雅马哈P48B学习钢琴!

文章大纲 概念简介USB OTG or Host?MIDI 实现效果需要购买的硬件&#xff1a;USB to HOST 转MIDI 接口的钢琴内录线连接后 查看外设关闭 拔出屏幕显示Close Device 概念简介 USB OTG or Host? USB&#xff08;Universal Serial Bus&#xff09;是一种通用的串行总线标准&am…

c++MessageBox解释

在C中&#xff0c;MessageBox是一个函数&#xff0c;它用于在窗口应用程序中显示一个对话框&#xff0c;向用户展示一条消息。这个函数通过创建一个模态对话框来中断程序的执行&#xff0c;直到用户响应为止。MessageBox函数接受几个参数&#xff0c;包括父窗口句柄、消息文本、…

前端开发中不同语言【react-i18next】

目录 查看并设置语言 单页面&#xff1a;html lang ​编辑 浏览器 自定义翻译 原理/实现 react-i18next【hook只能在函数组件中】 设置 模块&#xff1a;staticData.ts 散(重复利用)&#xff1a;命名空间.json 应用 准备 html标签 查看并设置语言 单页面&#x…

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…

Python——将Pyaudio的frame音频数据转换成wave格式

要将pyaudio捕获的音频帧&#xff08;frame&#xff09;数据转换成wave模块可以直接处理的格式&#xff0c;通常意味着你需要将这些音频帧数据组装成一个完整的音频流&#xff0c;并确保它们以wave模块期望的格式进行存储。但是&#xff0c;如果你的目的是将这些帧数据直接转换…