C语言 函数
时间:2024.11.10-11.11
一、学习内容
1、什么是函数
函数:程序中独立的功能。将反复书写的代码,又不确定什么时候回用到的代码打包起来。

2、函数的基本格式
函数的定义格式(写在main函数外)
void 函数名()
{
函数体;
}
函数里的代码不会主动运行,如果想要使用函数,必须进行函数的调用。
函数的调用方式
函数名();
3、带有形参的函数(只定义不赋值)

//问题:书写代码时,相加的数字不确定
void sum()
{int a=10,b=20;int c=a+b;printf("%d\n",c);
}//改进:只定义不赋值
void sum(int a,int b)
{int c=a+b;printf("%d\n",c);
}//调用
sum(10,20);
4、带有返回值的函数

//改进:只定义不赋值
void sum(int a,int b)
{int c=a+b;printf("%d\n",c);
}//调用
sum(10,20);问题:打印的结果没有交给调用处,而是直接输出到了打印台//改进:加上return关键字,将void改为int,void表示没有返回值,int...与返回值类型对应
//作用:1.结束函数 2.把后面的数据交给调用处
int sum(int a,int b)
{int c=a+b;return c;
}

#include<stdio.h>
int sum(int a,int b){
int sum=a+b;
return sum;}int main(){
int c=sum(93,10);
int d=sum(87,9);
if(c>d){
printf("小慧慧总分更高");}
else if(c<d){
printf("小丹丹总分更高");}
else if(c>d){
printf("两个人总分一样高");}return 0;}
使用函数的好处:
1、提高了代码的复用性
2、提高了代码的可维护性
5、定义函数的终极绝杀
三个问题:
1.定义函数,是为了干什么事情? 函数体
2.干这件事情,需要什么才能完成? 形参
3.干完了,调用处是否需要继续使用? 返回值类型
需要继续使用 , 必须写;不需要返回,用void
6、函数的注意事项


7、C语言中的常见函数(math.h、time.h)

函数查询访问网站
http://zh.cppreference.com
math.h:pow() 幂sqrt() 平方根ceil() 向上取整(进一法)floor() 向下取整(去尾法)abs() 绝对值time.h:time() 获取当前时间
//形参:表示获取的当前时间是否需要在其他地方进行存储一般来讲,不需要在其他地方进行存储的,NULL(大写)time(NULL);
//返回值:long long类型
//结果是什么呢?
//从1970年1月1日 0:0:0开始过了...秒的那个时间点
long long res = time(NULL);
printf("%lld\n",res);
8、随机数

随机数<stdlib.h> standard library 标准库
获取随机数
1.设置种子 srand()初始值,因为每一个随机数都是通过前一个数字再结合一系列复杂的计算得到的2.获取随机数int num= rand()3.输出打印
#include<stdio.h>
#include<stdlib.h>int main(){
//设置种子
srand(time(NULL));
//获取随机数
int num=rand();
//输出打印
printf("%d\n",num);return 0;
}
TIPS:x想要获取多个随机数,可以多次执行rand(),可以将rand()放入循环体里
9、随机数的两个小弊端

随机数结果固定的解决方案:让种子不固定
让一个变化的数据去充当种子 时间
srand(time(NULL));
TIPS:
如果忘记设置种子了,代码不会报错,程序默认的种子是1

绝招:用于生成任意范围之内的随机数
1.把这个范围变成包头不包尾,包左不包右的
举例:目标范围1-100
实际设置1-101
2.拿着尾巴 - 开头 101-1
3.修改代码
#include<stdio.h>
#include<stdlib.h>int main(){
//设置种子
srand(time(NULL));
//获取随机数
int num=rand()%100 +1;
//输出打印
printf("%d\n",num);return 0;
}
二、练习
1、练习1-两数之和

#include <stdio.h>
void sum()
{int a=10,b=20;int c=a+b;printf("%d\n",c);
}int main(){
sum();return 0;
}
2、练习2-带返回值的函数练习

#include<stdio.h>
int sum(int a,int b,int c)
{ int sum=a+b+c;return sum;}
int main(){
int sum1=sum(10,20,15);
int sum2=sum(20,30,17);
int sum3=sum(19,17,20);
int sum4=sum(23,21,19);
int arr[4]={sum1,sum2,sum3,sum3};
int max=0;
for(int i=0;i<4,i++)
{if(arr[i]>max)
{ max=arr[i];}}
printf("%d\n",max);
return 0;
}
2、练习2-猜数字小游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() {//设置种子srand(time(NULL));//获取随机数int num = rand() % 100 + 1;int n;for(int i=1;i<100;i++){scanf("%d", &n);if (n == num) {printf("你猜对了\n");break;}else if (n > num) {printf("你猜大了\n");}else if (n < num) {printf("你猜小了\n");}}return 0;
}
三、知识点和小技巧
1.如何查看函数的原型(定义)
按住ctrl键不放,用鼠标左键放在函数名上,再点击函数名
TIPS:方法和keil查看头文件的类似
相关文章:
C语言 函数
时间:2024.11.10-11.11 一、学习内容 1、什么是函数 函数:程序中独立的功能。将反复书写的代码,又不确定什么时候回用到的代码打包起来。 2、函数的基本格式 函数的定义格式(写在main函数外) void 函数名() { 函数…...
windows中docker安装redis和redisinsight记录
创建一个Redis运行容器,命令如下 docker run -it -d --name redis -p 6379:6379 redis --bind 0.0.0.0 --protected-mode no -d 代表Redis容器后台运行 --name redis 给创建好的容器起名叫redis -p 6379:6379 将容器的6379端口映射到宿主机的6379端口,注…...
itextpdf打印A5的问题
使用A5打印的时候,再生成pdf是没有问题的。下面做了一个测试,在打印机中,使用A5的纸张横向放入,因为是家用打印机,A5与A4是同一个口,因此只能这么放。 使用itextpdf生成pdf,在浏览器中预览pdf是…...
qt QUndoView详解
1、概述 QUndoView 是 Qt 框架中用于显示 QUndoStack(撤销堆栈)内容的视图类。它通常与 QUndoStack 一起使用,为用户提供了一个可视化的界面来查看和操作撤销/重做历史。QUndoView 可以显示堆栈中的每个命令,并允许用户通过界面进…...
python+智谱AI-实现钉钉消息自动回复
python智谱AI-实现钉钉消息自动回复 实现了电脑窗口切换,截图识别未读消息,与语言模型交互后,将答案带入到钉钉窗口中。偷个懒,直接贴代码了,后续不断完善注释,如果遇到读不懂的地方,欢迎交流。…...
Kafka-Eagle的配置——kafka可视化界面
通过百度网盘分享的文件:kafka-eagle-bin-2.0.8.tar.gz 链接:https://pan.baidu.com/s/1H3YONkL97uXbLTPMZHrfdg?pwdsltu 提取码:sltu 一、界面展示 二、软件配置 1、关闭kafka集群 kf.sh stop 2、将该软件上传到/opt/modules下 cd /opt…...
【命令操作】Linux上带宽流量监控nethogs命令详解 _ 统信 _ 麒麟 _ 方德
原文链接:【命令操作】Linux上带宽流量监控nethogs命令详解 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天带来一篇关于Linux上nethogs命令详解的文章。nethogs是一款非常实用的网络流量监控工具,帮助用户实时查看系统中每个进程的网…...
【入门篇】数字统计——多语言版
题目跳转:数字统计 题目解析: 这道题目要求统计在给定范围 [L, R] 内所有整数中数字 2 出现的次数。例如,在范围 [2, 22] 中,数字 2 分别在数 2、12、20、21、22 中出现的次数,最终出现了6次。 题目的输入为两个正…...
探索那些现代C++语法糖
本文来聊聊现代C的一些语法糖。 1.Auto auto x 10; // 推导为 int auto y 3.14; // 推导为 double2.范围-based for 循环 std::vector<int> v {1, 2, 3, 4, 5}; for (auto val : v) {std::cout << val << " "; }3.nullptr int* ptr nullpt…...
【LeetCode】【算法】33. 搜索旋转排序数组
LeetCode 33. 搜索旋转排序数组 题目描述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k…...
Python小游戏25——黄金矿工
首先,你需要安装Pygame库。 如果你还没有安装,可以使用以下命令进行安装: 【bash】 pip install pygame 【python】代码展示 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 60…...
WPF中Prism框架中 IContainerExtension 和 IRegionManager的作用
在Prism框架中,IContainerExtension和IRegionManager扮演着重要的角色,具体作用如下: IContainerExtension IContainerExtension接口是Prism 7中引入的,用于抽象依赖注入容器的操作。它实现了IContainerProvider和IContainerReg…...
C++实现用户分组--学习
第一步实现:ETL的设计分三部分:数据抽取(Data Extraction)、数据的清洗转换(Data Transformation)、数据的加载(Data Loading). 构建一个数据容器类,其中包含转换后的MNIST手写数据。还实现了一个数据处理程序,该数据处理程序将提…...
鸿蒙华为商城APP案例
模拟器运行效果如下: 鸿蒙版APP-华为商城-演示视频...
回首遥望-C++内存对齐的思考
这一章节主要巩固一下学习C/C时内存对齐相关的内容! 文章目录 什么是内存对齐?为什么要有内存对齐?如何进行内存对齐?致谢: 什么是内存对齐? 这里不提及一堆啰嗦概念,就结合实际出发࿰…...
力扣 LeetCode 704. 二分查找(Day1:数组)
解题思路: 二分查找主要分为[ left , right ]左闭右闭和[ left , right )左闭右开两种 此处采取[ left , right ]左闭右闭写法 注意: 1. right的初始化取值 2. while中取等 3. right mid -1 ; class Solution {public int search(int[] nums, i…...
【Mode Management】AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解
目录 前言 正文 1.AUTOSAR标准描述 1.1 EcuM_CheckWakeup用来干什么 1.2 EcuM_CheckWakeup在哪里被调用 1.3 EcuM_CheckWakeup的使用场景 1.3.1 GPT中断检测唤醒源 1.3.2 EcuM轮询GPT检测唤醒源 1.3.3 ICU中断检测唤醒源 1.3.4 其他 2.AUTOSR工具相关配置 3.唤醒源…...
Zabbix基础信息概述
1.Zabbix概述 Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警,这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix 提供了出色的报告和数据可…...
SpringBoot(十二)SpringBoot配置redis
接下来我要实现的webscoket即时聊天中需要使用到redis,我先在项目中配置一下redis。 我这里再windows中做测试,关于redis的安装请移步《Redis(三)Windows系统安装redis》 一:在pom.xml中添加依赖 <!-- springboot redis start --><dependency><grou…...
Pycharm安装
Pycharm安装 返回主目录Pycharm安装1. Pycharm下载PyCharm官网下载地址下载安装包 2. Pycharm安装第一步:双击安装包第二步:进入安装程序第三步:选择安装路径第四步:选择安装选项第五步:安装第六步:完成安装…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
