C语言入门系列 - 自定义函数

article/2025/8/28 6:06:17

C语言入门系列 - 自定义函数

第一节 C 语言基础以及基本数据类型
第二节 C 语言运算符
第三节 C 语言控制语句
第四节 C 语言自定义函数
第五节 C 语言修饰变量的关键字
第六节 C 语言构造数据类型–数组
第七节 C 语言字符串
第八节 C 语言指针
第九节 指针与函数、指针函数、函数指针
第十节 数组与指针、二级指针&NULL&void 指针
第十一节 结构体
第十二节 链表
第十三节 共用体union,枚举enum,宏定义#define,条件编译,const与指针
C语言–图书管理项目


函数

  • C语言入门系列 - 自定义函数
  • 函数介绍
  • 一、函数声明
  • 二、函数定义
    • 函数定义格式
  • 三、函数调用
  • 四、注意事项
  • 五、递归函数
  • 六、随机数函数
  • 总结


函数介绍

函数就是将一段代码封装起来,为了代码复用
功能性的代码: 判断一个数是不是素数
        判断某个年是闰年还是平年


提示:以下是本篇文章正文内容,下面案例可供参考

一、函数声明

函数声明:是为了在编译阶段让编译器知道函数的名字 函数的形参列表 函数的返回值。
函数三要素:函数名
      返回值类型
      形参列表:形参类型 形参名,形参类型 1 形参名 1,…
声明格式: 返回值类型 函数名(形参列表);
      int isPrime(int num);
一个月有多少天和谁有关? 月份 年份
函数名:days
返回值类型: short
形参列表: 2 个 short year,short month
  short days(short year,short month);
程序代码执行到上面语句的时候,它知道程序里面有一个名字叫 days 的函数,它的返回值类型是 short,它有两个形参,一个是 year,一个是 month,year 是 short 类型,month 是 short 类型,并且year 在前,month 在后。
  当调用函数 days 的时候程序会按照上面的信息进行语法检查,如果形参类型不一致或者返回值类型不一致,或者函数名错误都会报错。

二、函数定义

函数定义格式

返回值类型 函数名(形参列表)
{
// 业务实现代码
}

判断素数函数代码如下:

	int isPrime(int num){// 2~num-1 和 num 取余// 如果余数为 0 ,num 就不是素数,返回 0;// 如果执行 2~num-1 和 num 取余,没有一个余数为 0,则 num 是素数,返回 1int i;for(i=2;i<num;i++){if(num % i == 0){return 0;}}return 1;
}

三、函数调用

函数名(实参列表);  真正的数据
 isPrime(10);
  函数执行返回相应的结果,如果想保存结果,就需要开启一个和返回值类型一致的空间,用于保存函数返回的数据。
  int res = isPrime(13);
  printf(“%d”,res); // 1

函数调用流程:
在这里插入图片描述
注意:函数调用,有形参会首先在函数内部给形参分配空间。
   函数调用结束,里面的变量或者形参空间会被销毁掉。

四、注意事项

1.main 函数的外面 – 一个函数的定义不能写在另外一个函数里面。
2.在函数内不需要定义变量接收实参,函数调用时会将实参数据传递给形参。
3.注意函数返回值的接收问题。
4.函数:1、先定义(直接定义即声明+定义同时进行,但一定要在主函数main()前面进行定义)  2、在调用
5.返回值类型:数据类型 无返回值类型 void ,在函数里面可以不写 return,或者 return 的后面没有返回值。return ;
6.形参列表,数据类型 没有形参 – 可以不写形参,也可以写上 void
7.函数设计规范:一般不在函数里面写输入和输出语句。
        函数代码通用性 – 复用

五、递归函数

递归函数:一个函数在代码块中调用自身。需要设置一个终止条件
递归函数的优缺点:1、占用空间比较大  2、写法简单
递归:
本次执行需要等到下一次执行结束
用递归来算阶乘 f(n)
阶乘代码如下:

long long jiecheng(n)
{if(n == 1)		//结束条件{	return 1;}else			//调用自身函数{return n*jiecheng(n-1);}
}
// 需要用到函数执行后的结果,那么也就一位这个函数必须有返回值。
long long res = jiecheng(5);

六、随机数函数

库函数 stdlib.h
rand() 生成一个随机数
int __cdecl rand(void);  rand()在产生随机数的时候是根据种子按照一定的算法产生的。但是这个种子在电脑启动的时候就已经产生了。所以产生随机数的时候需要刷新种子。
srand() – 刷新种子的函数。
种子为了保证每次运行的时候不一样。可以使用时间戳
库函数 time.h
time(); __CRT_INLINE time_t __cdecl time(time_t *_Time) { return _time64(_Time); }
(unsigned int)time(NULL); // 当前系统时间距 1970-1-1 有多少毫秒
srand((unsigned int)time(NULL));

生成四位随机验证码代码如下:

#include<stdio.h>
#include<stdlib.h> 
#include<time.h>int main()
{	//-- 62 个char str[] = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int i;srand((unsigned int)time(NULL));	//刷新随机数种子 for( i=0 ; i<4 ; i++ ){printf("%c", str[rand()%62]);}return 0;
}

总结

函数定义的时候 ,之前定义在 main 函数的上面。
如果将自定义的函数放入到 main 函数下面,在 main 函数里面调用,因为函数执行的时候从上往下,执行到函数的调用的时候还不知道有这个函数,并且不知道函数的返回值类型、形参个数 、形参类型 ,形参顺序,无法进行语法检查(这时就正要进行函数声明)。
递归函数:一定需要设置一个终止条件。
随机函数生成随机数的写法很固定。

srand((unsigned int)time(NULL));	//刷新随机数种子 for( i=0 ; i<4 ; i++ ){printf("%c", str[rand()%62]);//随机数}

http://chatgpt.dhexx.cn/article/hdbYa3TW.shtml

相关文章

C语言-函数(自定义函数)

C语言中函数的分类&#xff1a; 1 库函数 2 自定义函数 自定义函数 如果库函数能干所有的事情&#xff0c;那还要程序员做什么&#xff1f; 所以更重要的是自定义函数 函数的组成&#xff1a; ret_type fun_name (part1) { statement; //语句项 &#xff08;函数体&…

C语言自定义函数使用

补充1&#xff1a;优先级&#xff0c;解答问题区分*p,*p0,*p0 <1>.首先要理解前后置的区别&#xff0c;前置&#xff0c;先计算后使用&#xff1b;后置&#xff0c;先使用后计算。 可用示例理解&#xff1a; <2>.其次要理解操作符的优先级 优先级从高到低&#…

C语言【库函数与自定义函数】详解

文章目录 一.什么是函数二.库函数1. 什么是库函数2. 为什么会有库函数&#xff1f;3.使用库函数的注意事项4.对学习库函数的建议 三.自定义函数1.什么是自定义函数2.自定义函数举例 一.什么是函数 提起函数&#xff0c;我们可能并不陌生&#xff0c;我们可能会联想到数学中的函…

C语言中的函数(重点介绍自定义函数)

C语言中的函数分为库函数和自定义函数&#xff0c;本篇重点介绍自定义函数中的函数调用 函数由一个或多个语句块组成&#xff0c;负责完成某项特定任务&#xff0c; 相较于其他代码&#xff0c;具有相对的独立性&#xff0c;一般会有返回值和输入参数&#xff0c;提供对过程的封…

C语言自定义函数的声明

C语言函数为什么要声明呢&#xff1f;我们在创建自定义函数的都知道要将自定义子函数放在主函数前面那么是为什么呢&#xff1f;可不可以不放在前面呢&#xff1f;小问号你是不是也一样有很多朋友呢&#xff1f; 答案是可以不把我们自己的自定义子函数放在前面&#xff1f;但是…

c语言函数详解1——自定义函数

这篇文章理论性知识比较多&#xff0c;不过对于初学者对于函数的理解会有更深层次的帮助 目录 c语言的函数——子程序 自定义函数 c语言的函数——子程序 *是大型程序中的某部分代码&#xff0c;由一个或者多个语句组成&#xff0c;她负责完成某项特定的任务&#xff0c;相较…

自定义函数

目录 一、自定义函数 二、函数参数 、传值调用和传址调用 2、1 传值调用 2、2 传址调用 三、函数的嵌套和链式访问 四、函数递归 一、自定义函数 C语言中有两类函数&#xff0c;一类是库函数&#xff0c;另外一类是自定义函数。自定义函数从字面意思上理解就是自…

C语言自定义函数

函数定义 return_type function_name([datatype1 arg1],[datatype1 arg2],...) { //函数体 } 函数三要素 返回值类型 函数名 参数列表 自定义函数的完整写法 #include <stdio.h> // 函数原型 int sum(int,int); // 调用函数 int main() { int sum(); } // 函数定义 i…

学习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;还是有更多…