005_C++数学库常用函数

数学库常用函数

函数

我们其实已经掌握了一些函数,比如主函数main()。还有其他的函数比如一些库中的函数,例:<stdio.h>头文件对应标准输入输出库中的printf()和scanf()、<stdlib.h>标准库头文件对应的标准库中的srand()和rand(),除此之外在C++中常用的还有数学库函数

C++中常见的数据类型

若想使用数学库函数,首先需导入<math.h>头文件,当然在C++中也可以导入<cmath>头文件

常用的数学库函数有:

函数解释
abs()取绝对值
ceil()向上取整
floor()向下取整
pow()指数函数
log2()对数函数
sqrt()算术平方根
#include <iostream> 
#include <cmath>
using namespace std; int main() { int a = -100;cout << abs(a) << endl;double d = 3.14;// 向下取整 cout << floor(d) << endl;// 向上取整 cout << ceil(d) << endl;int m=2, n=10;// m的n次方 cout << pow(m, n) << endl;// 对数函数  2的几次方是1024 cout << log2(1024) << endl;// 算术平方根cout << sqrt(100) << endl; return 0; 
}
100
3
4
1024
10
10

实战演练:完全平方数判定

#include <iostream> 
#include <cmath>
using namespace std; int main() { int n; cin >> n;double ret = sqrt(n);int i = int(ret);if(i == ret){cout << "yes" << endl;}else{cout << "no" << endl;}return 0; 
}

运行结果:

100
yes

函数与递归

函数与自定义函数

函数是一组一起执行一个任务的语句。每个C++程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。

自定义函数的声明要告诉编译器函数的名称、返回值和参数。

自定义函数

自定义函数名字和变量名一样都属于标识符,都必须遵循标识符的命名规则,而且要有意义

比如我们要写一个求和函数,可以起名为sum,再比如我们要写一个我们自己的交换函数,可以起名为mySwap。

无返回值类型void

void function(){cout << "这是一个无返回值类型的函数" << endl;
}

有返回值类型

int function(){cout << "这是一个有返回值类型的函数,返回值为1" << endl;return 1;
}

return的作用

自定义函数的返回值:

  • 结束当前函数(return的作用)。
  • 将返回值给到被调用的当前函数(返回值的作用)。

主函数的返回值:

  • 结束当前程序(return的作用)。
  • 一般情况下写为return 0,如果返回了错误码,说明程序崩溃。虽然编译成功,但代码中存在错误(返回值的作用)。

函数的调用

int main(){function_name(arg1, arg2......);
}

有参数

int sum(int a, int b){ // 形参return a + b;
}

自定义函数内的参数成为形参,即形式参数

int main(){int a, b;cout << sum(a, b); // 实参
}

主函数中调用函数传进去的参数为实参,即实际参数

实战演练:

#include <iostream> 
#include <cmath>
using namespace std; int myMax(int a, int b){return a > b ? a : b;
}int main() { int a, b; cin >> a >> b;// c++自带的求最大值函数max //cout << max(a, b) << endl;cout << myMax(a, b) << endl;return 0; 
}

运行结果:

100 200
200

实战演练:

#include <iostream> 
#include <cmath>
using namespace std; long long myPow(int a, int b){long long ans = 1;for(int i=1; i<=b; i++){ans *= a;}return ans;
}int main() { int m, n; cin >> m >> n;//cout << pow(m, n) << endl;cout << myPow(m, n) << endl;return 0; 
}

运行结果:

2 10
1024

作用域

作用域

作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。

全局变量、局部变量的作用域

全局变量作用域

主函数外对应的内存区域我们成为全局区,其中全局区定义的变量我们称之为全局变量

全局变量如果未初始化,会自动初始化为0

全局变量作用域为整个C++项目,任何一个函数(局部作用域)均可以访问全局变量

#include <iostream> 
using namespace std; // 全局区
// 全局变量如果未初始化,那么会自动初始化为0 
// 全局变量作用域作用于整个C++文件,任何一个局部区域都可以访问 
int g; void add(){g++;cout << g << endl;
} int main() { g++;cout << g << endl;add();return 0; 
}

运行结果:

1
2

局部变量作用域

函数内对应的内存区域我们称为栈区,栈区内定义的变量称为局部变量

局部变量必须初始化

局部变量的作用域为当前函数,各个局部作用域中的变量互不关联

#include <iostream> 
using namespace std; void add(){// 局部变量,局部变量必须初始化,局部变量作用域为当前函数下 int a = 200; a++;cout << a << endl;
} int main() { int a = 100;a++;add();cout << a << endl;return 0; 
}

运行结果:

201
101

参数的值传递与引用传递

int& 整型引用类型

#include <iostream> 
using namespace std; int main() { int b = 100;// int& 整型引用类型 int& a = b; // 给b起了个别名叫aa++;cout << b << endl; return 0; 
}

运行结果:

101

实战演练:自定义交换两个变量的函数mySwap()

#include <iostream> 
using namespace std; // 引用传参 
void mySwap(int& a, int& b){int c = a;a = b;b = c;
}int main() { int a, b; cin >> a >> b; //swap(a, b);mySwap(a, b);cout << a << " " << b;return 0; 
}

运行结果:

100 200
200 100

递归

递归

也许我们都听过下面这句话

从前有座山,山里有座庙,庙里有个和尚讲故事,故事内容是,从前有座山,山里有座庙,庙里有个和尚讲故事,故事内容是…

这句话包含了递归技术的思想,所谓递归,就是在自定义函数中调用自己

#include <iostream> 
using namespace std; // 递归-在自定义函数中调用自己 
void function(){cout << "从前有座山,山里有座庙,庙里有个和尚讲故事,故事内容是:" << endl;function();
} int main() { function();return 0; 
}

实战演练:递归打印1-n

#include <iostream> 
using namespace std; // 递归
int n;
void function(int i){if(i >= n) return; // 结束当前函数 cout << i << " ";i++; function(i);
} int main() { cin >> n;int i = 1; function(i);return 0; 
}

运行结果:

10
1 2 3 4 5 6 7 8 9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66913.shtml

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

相关文章

抽象类实现接口的意义

文章目录 前言一、抽象类和接口对比二、举例说明三种情况1.接口实现类接口 2.抽象类实现类抽象类实现类(子类) 3.抽象类实现接口接口抽象类三个实现类 总结 前言 抽象类和接口其实都是抽象的一种,那么他俩有何异同呢? 抽象类实现接口的意义何在? 一、抽象类和接口对比 接口…

MyBatis中至关重要的关系映射----全方面介绍

目录 一 对于映射的概念 1.1 三种关系映射 1.2 resultType与resultMap的区别 resultType&#xff1a; resultMap&#xff1a; 二&#xff0c;一对一关联查询 2.1 嵌套结果集编写 2.2 案例演示 三&#xff0c;一对多关联查询 3.1 嵌套结果集编写 3.3 案例演示 四&…

统计教程|PASS实现两计量指标的的Pearson相关分析时的样本量估计

在临床研究中我们经常会研究两个观察指标间是否有联系&#xff0c;如人的身高与体重、体温与脉搏次数、药物剂量与反应等&#xff0c;相关分析就是研究观察指标间相关关系的统计方法&#xff0c;由于不同资料类型其分析方法有所差异&#xff0c;故本节主要讲解的是定量资料的线…

综合实训-------成绩管理系统 V1.1

综合实训-------成绩管理系统 V1.1 1、一维数组数据double 2、我们用元素的位置来当学号。 1、录入数据 【5个数据】或【通过文件的方式取数据】 2、显示数据 3、添加一条记录 4、修改一条记录 5、删除一条记录 6、查找一条记录。【输入学号&#xff0c;显示成绩】 7、统计。【…

使用Python进行Base64编码和解码

假设您有一个想要通过网络传输的二进制图像文件。您很惊讶对方没有正确接收该文件 - 该文件只是包含奇怪的字符&#xff01; 嗯&#xff0c;您似乎试图以原始位和字节格式发送文件&#xff0c;而所使用的媒体是为流文本而设计的。 避免此类问题的解决方法是什么&#xff1f;答…

说说你了解的 Nginx

分析&回答 nginx性能数据 高并发连接: 官方称单节点支持5万并发连接数&#xff0c;实际生产环境能够承受2-3万并发。内存消耗少: 在3万并发连接下&#xff0c;开启10个nginx进程仅消耗150M内存 (15M10150M) 1. 正向、反向代理 所谓“代理”&#xff0c;是指在内网边缘 …

C++信息学奥赛1177:奇数单增序列

#include<bits/stdc.h> using namespace std; int main(){int n;cin>>n; // 输入整数 n&#xff0c;表示数组的大小int arr[n]; // 创建大小为 n 的整型数组for(int i0;i<n;i) cin>>arr[i]; // 输入数组元素for(int i0;i<n;i){ // 对数组进行冒泡排序f…

uniapp-秋云图表 ucharts echarts 对比与关系

科普&#xff1a; 秋云图表库&#xff0c;包含二种配置属性对应二种js配置文件。 一种是 &#xff1a;echarts.js,一种是 &#xff1a; ucharts。 二者的配置属性不一样&#xff01; ucharts和echarts对比 ucharts和echarts都是用于数据可视化的开源JavaScript库&#xff0c;它…

gRPC-Gateway 快速实战

今天来分享一波 gRPC-Gateway &#xff0c; 之前咱们有分享过什么是 gRPC 及其使用方式&#xff0c;可以看看这些关于 gRPC 的历史文章&#xff1a; gRPC介绍 gRPC 客户端调用服务端需要连接池吗&#xff1f; gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I 今天主要是分…

Python学习教程:进程的调度

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 要想多个进程交替运行&#xff0c;操作系统必须对这些进程进行调度&#xff0c; 这个调度也不是随即进行的&#xff0c;而是需要遵循一定的法则&#xff0c;由此就有了进程的调度算法。 python更多源码/资料/解答/教程等 …

keepalived 主备都存在vip, keepalived主备跨网段配置;keepalived主备服务器不在同一个网段怎么配置

keepalived 主备都有vip问题&#xff1b;主备服务器不在同一个网段怎么配置 主机&#xff1a;128.192.10.10 备机&#xff1a;128.192.11.11 备机&#xff1a;128.192.22.22 # keepalived的配置文件增加如下配置即可实现 # 主机&#xff1a;128.192.10.10 vrrp_instance VI_1 {…

VB工资管理系统设计与实现

摘 要 工资管理系统是典型的管理信息系统,采用计算机管理企业的工资发放是当前不可缺少的一种管理手段。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强,数据安全性好的数据库。而对于后者则要求应用程序功能…

uni-app 之 安装uView,安装scss/sass编译

uni-app 之 安装uView&#xff0c;安装scss/sass编译 image.png image.png image.png 点击HBuilder X 顶部&#xff0c;工具&#xff0c;插件安装&#xff0c;安装新插件 image.png image.png 安装成功&#xff01; 注意&#xff0c;一定要先登录才可以安装 image.png 1. 引…

【python】—— 函数详解

前言&#xff1a; 本期&#xff0c;我们将要讲解的是有关python中函数的相关知识&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;函数是什么 &#xff08;二&#xff09;语法格式 &#xff08;三&#xff09;函数参数 &#xff08;四&#xff09;函…

webpack实战:某网站JS逆向分析

文章目录 1. 写在前面2. 抓包分析3. 扣加密代码 1. 写在前面 好的逆向能够帮助我们了解加密实现&#xff0c;然后根据加密方式&#xff08;md5,base64,res,des,rsa…)还原加密算法的过程。可以看看我之前的这篇文章&#xff1a;快速定位查找加密方式特征与技巧 目标站点&#…

什么是rem单位和em单位?它们有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ rem 和 em 单位⭐ rem 单位&#xff08;Root Em&#xff09;⭐ em 单位⭐ 区别总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入…

java八股文面试[多线程]——newWorkStealingPool

newWorkStealingPool是什么&#xff1f; newWorkStealingPool简单翻译是任务窃取线程池。 newWorkStealingPool 是Java8添加的线程池。和别的4种不同&#xff0c;它用的是ForkJoinPool。 使用ForkJoinPool的好处是&#xff0c;把1个任务拆分成多个“小任务”&#xff0c;把这…

UDP 广播

一、UDP 通信图解 UDP通信、本地套接字_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/132523536?spm1001.2014.3001.5501 #include <sys/types.h> #include <sys/socket > ssize_t sendto(in…

hadoop学习:mapreduce的wordcount时候,继承mapper没有对应的mapreduce的包

踩坑描述&#xff1a;在学习 hadoop 的时候使用hadoop 下的 mapreduce&#xff0c;却发现没有 mapreduce。 第一反应就是去看看 maven 的路径对不对 settings——》搜索框搜索 maven 检查一下 Maven 路径对不对 OK 这里是对的 那么是不是依赖下载失败导致 mapreduce 没下下…

MySQL总复习

目录 登录 显示数据库 创建数据库 删除数据库 使用数据库 创建表 添加数据表数据 查询表 添加数据表多条数据 查询表中某数据 增insert 删delete 改update 查select ​ where like ​编辑 范围查找 order by 聚合函数 count max min sum avg g…