当前位置: 首页 > news >正文

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语言 函数

时间&#xff1a;2024.11.10-11.11 一、学习内容 1、什么是函数 函数&#xff1a;程序中独立的功能。将反复书写的代码&#xff0c;又不确定什么时候回用到的代码打包起来。 2、函数的基本格式 函数的定义格式&#xff08;写在main函数外&#xff09; void 函数名() { 函数…...

windows中docker安装redis和redisinsight记录

创建一个Redis运行容器&#xff0c;命令如下 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端口&#xff0c;注…...

itextpdf打印A5的问题

使用A5打印的时候&#xff0c;再生成pdf是没有问题的。下面做了一个测试&#xff0c;在打印机中&#xff0c;使用A5的纸张横向放入&#xff0c;因为是家用打印机&#xff0c;A5与A4是同一个口&#xff0c;因此只能这么放。 使用itextpdf生成pdf&#xff0c;在浏览器中预览pdf是…...

qt QUndoView详解

1、概述 QUndoView 是 Qt 框架中用于显示 QUndoStack&#xff08;撤销堆栈&#xff09;内容的视图类。它通常与 QUndoStack 一起使用&#xff0c;为用户提供了一个可视化的界面来查看和操作撤销/重做历史。QUndoView 可以显示堆栈中的每个命令&#xff0c;并允许用户通过界面进…...

python+智谱AI-实现钉钉消息自动回复

python智谱AI-实现钉钉消息自动回复 实现了电脑窗口切换&#xff0c;截图识别未读消息&#xff0c;与语言模型交互后&#xff0c;将答案带入到钉钉窗口中。偷个懒&#xff0c;直接贴代码了&#xff0c;后续不断完善注释&#xff0c;如果遇到读不懂的地方&#xff0c;欢迎交流。…...

Kafka-Eagle的配置——kafka可视化界面

通过百度网盘分享的文件&#xff1a;kafka-eagle-bin-2.0.8.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1H3YONkL97uXbLTPMZHrfdg?pwdsltu 提取码&#xff1a;sltu 一、界面展示 二、软件配置 1、关闭kafka集群 kf.sh stop 2、将该软件上传到/opt/modules下 cd /opt…...

【命令操作】Linux上带宽流量监控nethogs命令详解 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【命令操作】Linux上带宽流量监控nethogs命令详解 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天带来一篇关于Linux上nethogs命令详解的文章。nethogs是一款非常实用的网络流量监控工具&#xff0c;帮助用户实时查看系统中每个进程的网…...

【入门篇】数字统计——多语言版

题目跳转&#xff1a;数字统计 题目解析&#xff1a; 这道题目要求统计在给定范围 [L, R] 内所有整数中数字 2 出现的次数。例如&#xff0c;在范围 [2, 22] 中&#xff0c;数字 2 分别在数 2、12、20、21、22 中出现的次数&#xff0c;最终出现了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 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k…...

Python小游戏25——黄金矿工

首先&#xff0c;你需要安装Pygame库。 如果你还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; 【bash】 pip install pygame 【python】代码展示 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 60…...

WPF中Prism框架中 IContainerExtension 和 IRegionManager的作用

在Prism框架中&#xff0c;IContainerExtension和IRegionManager扮演着重要的角色&#xff0c;具体作用如下&#xff1a; IContainerExtension IContainerExtension接口是Prism 7中引入的&#xff0c;用于抽象依赖注入容器的操作。它实现了IContainerProvider和IContainerReg…...

C++实现用户分组--学习

第一步实现&#xff1a;ETL的设计分三部分&#xff1a;数据抽取(Data Extraction)、数据的清洗转换(Data Transformation)、数据的加载(Data Loading). 构建一个数据容器类&#xff0c;其中包含转换后的MNIST手写数据。还实现了一个数据处理程序&#xff0c;该数据处理程序将提…...

鸿蒙华为商城APP案例

模拟器运行效果如下&#xff1a; 鸿蒙版APP-华为商城-演示视频...

回首遥望-C++内存对齐的思考

这一章节主要巩固一下学习C/C时内存对齐相关的内容&#xff01; 文章目录 什么是内存对齐&#xff1f;为什么要有内存对齐&#xff1f;如何进行内存对齐&#xff1f;致谢&#xff1a; 什么是内存对齐&#xff1f; 这里不提及一堆啰嗦概念&#xff0c;就结合实际出发&#xff0…...

力扣 LeetCode 704. 二分查找(Day1:数组)

解题思路&#xff1a; 二分查找主要分为[ left , right ]左闭右闭和[ left , right )左闭右开两种 此处采取[ left , right ]左闭右闭写法 注意&#xff1a; 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 使用灵活的通知机制&#xff0c;允许用户为几乎任何事件配置基于邮件的告警&#xff0c;这样可以快速反馈服务器的问题。基于已存储的数据&#xff0c;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安装第一步&#xff1a;双击安装包第二步&#xff1a;进入安装程序第三步&#xff1a;选择安装路径第四步&#xff1a;选择安装选项第五步&#xff1a;安装第六步&#xff1a;完成安装…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...