C语言自定义函数

article/2025/8/28 8:21:37

函数定义

return_type function_name([datatype1 arg1],[datatype1 arg2],...)

{

        //函数体

}

函数三要素

返回值类型

函数名

参数列表

自定义函数的完整写法

#include <stdio.h>

// 函数原型

int sum(int,int);

// 调用函数

int main()

{

        int sum();

}

// 函数定义

int sum(int num1,int num2)

{

        //函数实现的代码

}

注意:

  1. 函数原型与函数定义的头部类似,函数原型最后以分号结尾
  2. 函数原型中的参数名称可以省略,只写参数类型

练习

三种图形的面积计算公式如下:

圆:s = PI * r * r;

矩形:s = width * height;

使用函数分别实现图形的面积计算,打印计算结果

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 函数原型
void calcCircle(); // 计算圆面积
void calcRectangle(); //计算矩形面积// 函数定义
void calcCircle()
{double r,s; //定义圆的半径和面积printf("请输入半径:");scanf("%lf",&r);s = 3.14 * pow(r,2);printf("面积为:%.2lf\n",s);
}
void calcRectangle()
{double width,height,s; //定义矩形宽、高和面积printf("请输入宽和高:");scanf("%lf%lf",&width,&height);s = width * height;printf("面积为:%.2lf",s);
}
int main()
{calcCircle(); // 调用计算圆面积calcRectangle(); // 调用计算矩形
}

带返回值的函数

C语言中的返回值

关键词:return

只能返回一个值,不能返回多个值

返回值类型必须与原型中的返回值类型匹配

return会立即终止函数并返回,可返回空值 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 函数原型
int calcSum(); // 求1-100之间的偶数和 
// 函数定义
int calcSum()
{// 1-100之间的偶数和int sum = 0;int i;for(i = 1;i <= 100;i++){if(i % 2 == 0){sum += i;}	} // 将计算的结果返回return sum; 	
} 
// 调用函数
int main()
{// 如果函数有返回值,调用时,记得使用对应类型的变量int sum = calcSum(); printf("1-100偶数和为:%d",sum);	
}

函数案例

需求:

书写函数实现数组元素的查找,要求返回找到的元素下标

#include <stdio.h>
#include <stdlib.h>
// 书写函数实现数组元素的查找,要求返回找到的元素下标
// 函数原型
int search(); 
// 函数调用
int main() 
{int index = search(); // 接收函数里面返回的值printf("%d",index);
}
// 函数定义
int search()
{int SearchIndex = -1; // 查找数字的下标,初始值一个不存在的下标int SearchNum; // 需要查找的数字int nums[] = {2,44,99,33,222,1000,99,4}; // 数组printf("请输入需要查找的数:");scanf("%d",&SearchNum);int i;for(i = 0;i < 8;i++){// 使用指针取值 if(SearchNum == *(nums + i)){SearchIndex = i; // 记录找到元素的下标 break;}	} return SearchIndex; // 返回查找到的元素下标 
}

书写函数实现冒泡排序并返回排序后的数组

#include <stdio.h>
#include <stdlib.h>
// 书写函数实现冒泡排序并返回排序后的数组
// 函数原型
double *sort();
// 函数调用
int main()
{sort();
}
// 函数定义
double *sort()
{double nums[] = {2,4,9.9,1,4,6};double temp; // 中间值// 使用双循环排序// 交换个数for (int i = 0;i < 6;i++){// 交换次数for(int j = 0;j < 6 - i - 1;j++){if(nums[j] > nums[j + 1]){temp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = temp;}}}// 使用循环打印printf("打印数字内容为:\n");for(int i = 0;i < 6;i++){printf("%.2lf\t",nums[i]);}return nums; // //返回值是首地址,函数名和函数原型前面要加*,调用的时候不需要只要函数名
}

注意://返回值是首地址,函数名和函数原型前面要加*,调用的时候不需要只要函数名

C语言自定义函数返回数组、字符串的写法:

小结:

动态分配内存

malloc        (int *)malloc(4 * 5); //强转,5个元素4字节

calloc         calloc(5,4);

free            释放malloc和calloc分配的内存

realloc        推翻malloc和calloc,重新分配动态内存

 (^_-) 我的学习之路任重道远,咱们下期见~~~


http://chatgpt.dhexx.cn/article/5sPq8evk.shtml

相关文章

学习pyqt 继承中self的疑问

前面学习了&#xff0c;面对对象编程&#xff0c;继承&#xff0c;有了一些理解。继续学习pyqt5 看到下面有了一些疑问。 import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIconclass Example(QWidget):def __init__(self):super().…

Python中类函数中self是什么

首先我们来看两组代码运行的结果 代码组一&#xff1a; class C1:def func1():x10print("func1的x&#xff1a;",x)def func2(self):x20print("func2的x&#xff1a;",x)C1.func1() C1.func2()结果如下 代码组二&#xff1a; class C1:def func1():x…

python中return self用法详解

直接上代码来理解return self的用法&#xff01; 示例代码1&#xff1a; class Test(object):def __init__(self):self.age 25def add(self):self.age 1print(self.age)obj Test() obj.add()运行结果&#xff1a; 有时候当我们想对实例对象的方法进行连续调用时&#xff0…

Python——self参数

self 的意思是“自己”,表示的是对象自身,当某个对象调用成员方法的时候,Python 解释器会自动把当前对象作为第1个参数传给 self ,用户只需要传递后面的参数就可以了。 self 参数的应用&#xff1a; #program0706.py self 参数的应用 class Animal:类中未定义构造方法&#x…

php 中self什么意思,php中self的用法是什么

php中self的用法&#xff1a; self是指向类本身&#xff0c;也就是PHP self关键字是不指向任何已经实例化的对象&#xff0c;一般self使用来指向类中的静态变量。 1、self可以访问本类中的静态属性和静态方法&#xff0c;可以访问父类中的静态属性和静态方法。 相关推荐&#x…

纯C++实现24位bmp格式图片的读取和修饰

问题:现有一张bmp图片,要求将它读取到程序中并进行灰度化、水平翻转、模糊、茶色滤镜四种效果的一种,并输出新图片,如下所示: 命令行输入: 其中: 参数1:-b/g/s/r,先后表示blur(模糊),grey(灰度化),sepia(褐色),row reverse(水平翻转) 参数2:源文件名 参数3:新文…

SE78上传BMP格式图片出错,出错信息提示上传的不是BMP格式图片

如下图&#xff0c;导入文件为一BMP图片(红框部分), 然后点击确认键&#xff08;黑框部分&#xff09;。 结果却出错&#xff0c;提示不是BMP文件&#xff0c;如下图红框部分。 很纳闷明明是BMP怎么就提示说不是BMP呢&#xff1f;感觉应该是上传的图片有问题&#xff0c;所以想…

C++读取bmp格式图片

类的格式按照bmp的文件头、信息头、调色板和数据域写好即可 因为图片是按字节读的&#xff0c;所以要强制让编译器不对结构体进行字节对齐&#xff0c;否则会出错 因为bmp格式规定存储时每行的像素数要补齐至4的整数倍&#xff0c;所以读入和写出时要加一些对应的操作 ————…

android 图片格式,常见图片格式详解

做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。 常见的图片格式有bmp, jpg…

Qt之生成png/jpg/bmp格式图片

Qt之生成png/jpg/bmp格式图片 一、问题描述二、显示效果三、核心代码示例 一、问题描述 有时候需要把Qt绘制的一些图形保存为png/jpg/bmp格式的图片&#xff0c;下面就根据自己写的一个简单的测试程序来讲解一下Qt中保存图片的方法。本文主要讲解使用Qpainter和QImage组合使用…

MFC详解显示BMP格式图片

本文主要是讲述《数字图像处理》系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解. 一.BMP图片格式定义 BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示…

bmp格式说明

bmp24位位图格式 创建bmp24位位图格式的图片 打开Windows系统自带的画图软件&#xff0c;如下&#xff1a; 点击“文件 > 另存为”&#xff0c;在弹出的界面中有4种bmp格式可以选择&#xff0c;如下&#xff1a; 不知道bmp格式是不是只有上面的4种&#xff0c;还是有更多…

如何批量将 bmp 格式图片转换为 png 格式

概要&#xff1a;bmp 格式是纹的操作系统当中非常常见的一种图片格式&#xff0c;这种格式的特点是包含的图像信息较丰富&#xff0c;几乎不进行压缩&#xff0c;所以导致了它存在一个很大的缺点&#xff0c;那就是占用磁盘空间过大&#xff0c;那么我们怎么将 bmp 格式的图片转…

将BMP 格式图片转换为 JPEG 格式【c语言】

源码链接: https://blog.csdn.net/qq_44394952/article/details/122587475?spm1001.2014.3001.5502. 一、任务及目标 利用c语言&#xff0c;通过将 RGB 信息转换为 YCrCb 信息、离散余弦变化、量化和 z 型编码&#xff0c;再进行游程编码和霍夫曼编码&#xff0c;最后进行尾…

如何批量将 bmp 格式图片转换转换为 jpg

概要&#xff1a;png 和 jpg 这两种格式的图片相信大家都非常熟悉&#xff0c;但是 bmp 格式的图片可能大家接触得并没有那么多&#xff0c;bmp 是 Windows 操作系统中的标准图像文件格式&#xff0c;能够被多种 Windows 应用程序所支持&#xff0c;因此格式的图片在 Windows 操…

bmp格式图的解析

文章目录 前言 一、bmp格式图的特点 二、bmp格式图的解析 总结 前言 在图像处理中经常会遇到BMP格式图的解析问题&#xff0c;本文简单介绍了bmp格式图的解析方式&#xff0c;并附上相应的C代码。 一、bmp格式图的特点 bmp图通常由图片的头文件信息和像素数据组成&#xff0c…

R语言与多元线性回归分析计算实例

6.3.7 计算实例 例 6.9 某大型牙膏制造企业为了更好地拓展产品市场&#xff0c;有效地管理库存&#xff0c;公司董事会要求销售部门根据市场调查&#xff0c;找出公司生产的牙膏销售量与销售价格&#xff0c;广告投入等之间的关系&#xff0c;从而预测出在不同价格和广告费用下…

多元线性回归检验

多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系&#xff0c;如果二者的以来关系可以用线性形式来刻画&#xff0c;则可以建立多元线性模型来进行分析。 1.t检验 t检验是对单个变量系数的显著性检验&#xff0c;一般看p值&#xff1b; 如果p值小于0.05表示该…

[DataAnalysis]多元线性回归深入浅出-案例+模型假设+参数估计方法+模型评判方法+变量选择+多重共线性问题

一、案例介绍 1、目的&#xff1a;利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。 2、数据来源&#xff1a;随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。 3、解释变量包括&#xff1a;资产周转率、当年净资产收益…

基于spss的多元回归分析模型

还是数学建模中的一个小问题&#xff0c;具体概念分析在百度上的大佬说的已经足够详细&#xff0c;在此不再赘述。 链接: 多元回归分析. 我主要根据实例讲解如何通过spss进行建模&#xff0c;并进行模型参数的分析和验证。 打开spss&#xff08;如果遇到打不开的情况&#x…