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

news2024/12/27 15:55:27

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

 

 

一.  基础知识的学习 

 

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.coloradmin.cn/o/1434126.html

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

相关文章

酷开系统 | 拓展内容营销边界,酷开科技大屏价值全面升维

丰富的内容是智能大屏吸引消费者的关键。随着智能大屏各类垂直应用的增多&#xff0c;和长、短视频等多元内容的加入&#xff0c;使消费者的使用需求进一步激发和释放&#xff0c;这些流量的加入&#xff0c;也使大屏成为了营销的天然宝藏。酷开科技一直致力于OTT大屏营销&…

这个人脸考勤技术,拿走直接套用!请收藏!

随着科技的不断发展&#xff0c;人脸识别技术在各个领域得到了广泛应用&#xff0c;其中之一就是人脸考勤系统。 三维人脸考勤系统作为现代智能考勤的代表&#xff0c;通过先进的人脸识别技术&#xff0c;为组织提供了一种高效、准确、安全的考勤解决方案。 客户案例 制造企业…

【XR806开发板试用】TCP通信测试 Ping 命令测试

1.工程准备 由于要使用wifi功能&#xff0c;直接从wlan_demo复制一份出来&#xff0c;然后修改。 源文件只留下 main.c 就可以了。 BUILD.gn文件 import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_mying") {configs []sources…

【C语言】const修饰指针的不同作用

目录 const修饰变量 const修饰指针变量 ①不用const修饰 ②const放在*的左边 ③const放在*的右边 ④*的左右两边都有const 结论 const修饰变量 变量是可以修改的&#xff0c;如果把变量的地址交给⼀个指针变量&#xff0c;通过指针变量的也可以修改这个变量。 但…

vue - 指令(一)

看文章可以得到什么&#xff1f; 1.可以快速的了解并会使用vue的指令 2.可以加深你对vue指令的理解&#xff0c;知道每个指令代表什么功能​​​​​​​ 目录 什么是vue的指令&#xff1f;​​​​​​​ vue常见指令的使用 v-html v-show v-if v-else 和v-else-…

JVM 性能调优 - Java 中的四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

解决ssh: connect to host 192.168.x.x port 22: Connection refused

我在使用scp命令向另一目标主机传输文件时提示ssh: connect to host 192.168.x.x port 22: Connection refused错误&#xff0c;总结出现的原因&#xff0c;及解决办法。 查看目标主机的ssh服务是否启动 service ssh status 如下图显示则启动状态 如果提示Unit ssh.service co…

python制作恶意软件删除工具

今天&#xff0c;来教大家用python制作一个恶意软件删除工具 查杀流程图 对&#xff0c;就这些&#xff0c;已经具备了杀毒软件的功能 判断文件是否为病毒 要查杀病毒&#xff0c;先要判断文件是不是病毒&#xff08;不然删错了咋办&#xff09;&#xff0c;这里我们用获取文…

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

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

多彩贵州人文山水展风采,微环境监测智能调控护古韵

一、人文山水时光峰峦——多彩贵州历史文化展 2月3日&#xff0c;贵州省博物馆向公众开放《人文山水时光峰峦——多彩贵州历史文化展》。6000平方米展厅里&#xff0c;从石器时期开始&#xff0c;通过六个篇章&#xff0c;用3503件文物的回忆链&#xff0c;系统化的向观众揭开…

我要成为嵌入式高手之2月4、5日Linux高编第二天!!

读写函数接口 1、fgetc 语法&#xff1a; 功能&#xff1a;从流中获取一个字符 练习1&#xff1a;编写程序统计文件的行数 #include <stdio.h>int main(void) {FILE *fp NULL;char ch 0;int row 0;fp fopen("file.txt","r");if (NULL fp){pe…

C#验证字符串的长度,用正则表达式 vs 字符数组长度或字符串的长度

目录 一、使用的方法 1.使用正则表达式 2.通过计算字符串的长度验证 二、实例 1.源码 2.生成效果 一、使用的方法 1.使用正则表达式 使用正则表达式可以判断和限制用户输入的字符串长度。 比如验证用户密码不得少于8为&#xff0c;匹配的正则表达式"^.{8,}$"…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

空气质量预测 | Matlab实现基于SVR支持向量机回归的空气质量预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 政府机构使用空气质量指数 (AQI) 向公众传达当前空气污染程度或预测空气污染程度。 随着 AQI 的上升,公共卫生风险也会增加。 不同国家有自己的空气质量指数,对应不同国家的空气质量标准。 基于支持向量机(Su…

高速接口PCB布局指南(一)高速信号接口概述

高速接口PCB布局指南&#xff08;一&#xff09;高速信号接口概述 1.什么是高速信号接口&#xff1f;2.高速信号PCB设计概述2.1 概述2.2 关键信号 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.什么是高速信号接口&#xff1f; 高速信号接口是指用于传输高…

jmeter-04创建请求

文章目录 一、发送请求-查看响应流程二、新建请求三、选择请求方式&#xff0c;填写url1.发送get请求当只有请求方式不一样的时候&#xff0c;参数都填写在参数栏里面&#xff0c;GET请求与POST请求的区别&#xff1f; 2.发送post请求2.1 application/x-www-form-urlencoded2.2…

二叉搜索树题目:二叉搜索树的最近公共祖先

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉搜索树的最近公共祖先 出处&#xff1a;235. 二叉搜索树的最近公共祖先 难度 3 级 题目描述 要求 给定一个…

Springboot集成ElasticSearch快速入门demo

一、ElasticSearch介绍 elasticsearch是构建在Apache Lucene上的使用Java语言开发的开源分布式搜素引擎。Lucene是一个开源的全文搜索引擎工具包&#xff0c;它仅是一个工具包而不是一个完整的工作引擎&#xff0c;并且只能被Java应用程序调用&#xff0c;elasticsearch基于RES…

云计算运营模式介绍

目录 一、云计算运营模式概述 1.1 概述 二、云计算服务角色 2.1 角色划分 2.1.1 云服务提供商 2.1.2 云服务消费者 2.1.3 云服务代理商 2.1.4 云计算审计员 2.1.5 云服务承运商 三、云计算责任模型 3.1 云计算服务模式与责任关系图 3.2 云计算服务模式与责任关系解析…

C++进阶--搜索二叉树

概念 搜索二叉树是一种特殊的二叉树&#xff0c;其具有以下特点&#xff1a; 1.对于每个结点&#xff0c;它的左子树中的所有节点的值都小于该节点的值&#xff0c;而右子树中的所有节点的值都大于该节点的值。 2.左子树和右子树都是搜索二叉树。 这个 特性使得搜索二叉树可…