C++信息学竞赛中常用函数的一般用法

复制代码
在C++ 信息学竞赛中,有许多常用函数能大幅提升编程效率。下面为你介绍一些常见函数及其一般用法:

一、比较函数

复制代码
1、max()

//求出a,b的较大值

int a=10,b=5,c;c=max(a,b);//得出的结果就是c等于10.

2、min()

//求出a,b的较小值

int a=10,b=5,c;c=min(a,b);//得出的结果就是c等于5.

3、swap()

//交换a,b变量的值

int a=10,b=5;swap(a,b);//得出的结果就是a等于5;b等于10.

二、数学函数

1、abs()

//用于计算整数的绝对值

复制代码
int a = -5;int b = abs(a); // b 的值为 5
2、fabs()

//用于计算浮点数的绝对值:

​​​​​​​

复制代码
double x = -3.14;double y = fabs(x); // y 的值为 3.14
3、pow()

//用于计算幂次方,不过返回值为 double 类型,使用时要留意精度问题。

复制代码
double result = pow(2, 3); // 计算 2 的 3 次方,result 的值为 8.0
4、sqrt()

//用于计算平方根:

​​​​​​​

复制代码
double root = sqrt(16); // root 的值为 4.0

5、round()

//四舍五入到整数
复制代码
double a = 3.5;double r = round(a);  // 返回 4.0(向最近的整数舍入)

"四舍六入五成双"(银行家舍入法):

若小数部分 恰好为 0.5 ,则舍入到 最近的偶数

​​​​​​​

复制代码
round(2.5);  // 返回 2.0(偶数)
round(3.5);  // 返回 4.0(偶数)

其他情况正常四舍五入:

​​​​​​​

复制代码
round(2.4);  // 返回 2.0
round(2.6);  // 返回 3.0
round(-2.5); // 返回 -2.0(偶数)

6、floor()

//向下取整 floor(1.0/2) = 0等同于 1/2
复制代码
floor(3.5);  // 返回 3.0
floor(-3.5); // 返回 -4.0

7、ceil()

//向上取整 ceil(1.0/2) = 1
复制代码
std::ceil(3.5);   // 返回 4.0
std::ceil(-3.5); // 返回 -3.0

三、字符串处理函数

1、substr()

//用于截取子字符串:

复制代码
string s = "abcdef";string sub1 = s.substr(1, 3); // 从索引 1 开始,截取长度为 3 的子字符串,sub1 的值为 "bcd"
string sub2 = s.substr(2); // 从索引 2 开始截取到字符串末尾,sub2 的值为 "cdef"
2、stoi()stod()

//用于将字符串转换为整数或双精度浮点数:

​​​​​​​

复制代码
string numStr = "123";int num = stoi(numStr); // num 的值为 123
string doubleStr = "3.14";double d = stod(doubleStr); // d 的值为 3.14

四、算法库函数

1、sort()

//用于对数组或容器进行排序:

​​​​​​​

复制代码
int arr[] = {5, 3, 1, 4, 2};int n = sizeof(arr) // sizeof(arr[0]);sort(arr, arr + n); // 对数组进行升序排序
vector<int> v = {5, 3, 1, 4, 2};sort(v.begin(), v.end()); // 对向量进行升序排序

五、内存操作函数

1、memset()

//用于初始化数组:

​​​​​​​

复制代码
int arr[10];memset(arr, 0, sizeof(arr)); // 将数组所有元素初始化为 0
// 注意:如果要初始化为其他值(如 -1),可以使用以下方式memset(arr, -1, sizeof(arr)); // 将数组所有元素初始化为 -1
相关推荐
CoderYanger10 小时前
MySQL数据库——3.2.1 表的增删查改-查询部分(全列+指定列+去重)
java·开发语言·数据库·mysql·面试·职场和发展
迷知悟道10 小时前
java面向对象四大核心特征之抽象---超详细(保姆级)
java·后端
歪歪10010 小时前
Qt Creator 打包应用程序时经常会遇到各种问题
开发语言·c++·qt·架构·编辑器
PEI0410 小时前
MVCC(多版本并发控制)
java·开发语言·数据库
程序员Xu10 小时前
【LeetCode热题100道笔记】腐烂的橘子
笔记·算法·leetcode
天选之女wow11 小时前
【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
数据结构·算法·leetcode·链表
熊猫钓鱼>_>11 小时前
2025反爬虫之战札记:从robots.txt到多层防御的攻防进化史
开发语言·c++·爬虫
半夏陌离11 小时前
SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
java·大数据·前端
oscar99911 小时前
少儿编程C++快速教程之——1. 基础语法和输入输出
c++·基础语法·少儿编程