CSP信奥赛C++常用系统函数汇总

发布于:2025-06-09 ⋅ 阅读:(20) ⋅ 点赞:(0)
# CSP信奥赛C++常用系统函数汇总

## 一、输入输出函数

### 1. cin / cout(`<iostream>`)
```cpp
int x; 
cin >> x;        // 输入
cout << x << endl;// 输出

优化ios::sync_with_stdio(false); 可提升速度

2. scanf() / printf()(<cstdio>

int x;
scanf("%d", &x); 
printf("%d\n", x);

二、数学函数(<cmath>

函数

功能

示例

sqrt(x)

平方根

sqrt(9.0) → 3.0

pow(a, b)

a的b次方

pow(2,3) → 8.0

abs(x)

整型绝对值

abs(-5) → 5

fabs(x)

浮点型绝对值

fabs(-3.14) → 3.14

ceil(x)

向上取整

ceil(2.3) → 3.0

floor(x)

向下取整

floor(2.9) → 2.0

round(x)

四舍五入

round(2.5) → 3.0

__gcd(a, b)

最大公约数

__gcd(12,18) → 6

三、字符串处理

1. C++字符串(<string>

方法/函数

功能

示例

stoi(str)

字符串转整数

stoi("123") → 123

substr(pos, len)

截取子串

"Hello".substr(1,3) → "ell"

find(str)

查找子串位置

"abcde".find("cd") → 2

str.length()

获取字符串长度

"test".length() → 4

2. C风格字符串(<cstring>

函数

功能

示例

strlen(s)

字符串长度

strlen("abc") → 3

strcmp(a, b)

字符串比较

strcmp("a", "b") → 负数

strcpy(dest, src)

复制字符串

strcpy(buf, "hello")

四、STL算法(<algorithm>

函数

功能

示例

sort(begin, end)

快速排序

sort(arr, arr+5);

swap(a, b)

交换变量

swap(x, y);

reverse(begin, end)

反转序列

reverse(s.begin(), s.end());

max(a, b) / min(a, b)

最值

max(3,5) → 5

next_permutation(...)

生成下一个排列

next_permutation(arr, arr+3);

五、容器操作

1. vector(<vector>

vector<int> v;
v.push_back(10);    // 添加元素
v.pop_back();       // 删除末尾元素
v.size();           // 获取元素个数

2. queue(<queue>

queue<int> q;
q.push(10);         // 入队
q.pop();            // 出队
q.front();          // 队首元素

3. stack(<stack>

stack<int> s;
s.push(10);         // 压栈
s.pop();            // 弹栈
s.top();            // 栈顶元素

六、其他实用函数

函数/方法

头文件

功能

示例

memset(arr, val, size)

<cstring>

内存初始化(按字节)

memset(arr, 0, sizeof(arr));

tolower(c) / toupper(c)

<cctype>

字符大小写转换

toupper('a') → 'A'

clock()

<ctime>

获取程序运行时间(ms)

clock() / CLOCKS_PER_SEC

七、完整汇总表格

分类

函数/方法

功能

头文件

示例

输入输出

cin / cout

标准输入输出

<iostream>

cin >> x; cout << x;

scanf() / printf()

格式化输入输出

<cstdio>

scanf("%d", &x);

数学函数

sqrt(x)

平方根

<cmath>

sqrt(9.0) → 3.0

pow(a, b)

幂运算

<cmath>

pow(2,3) → 8.0

__gcd(a, b)

最大公约数

<algorithm>

__gcd(12,18) → 6

字符串处理

stoi(str)

字符串转整数

<string>

stoi("123") → 123

str.substr(pos, len)

截取子串

<string>

"abcde".substr(1,3) → "bcd"

strcmp(a, b)

字符串比较

<cstring>

strcmp("a", "b") → 负数

STL算法

sort(begin, end)

快速排序

<algorithm>

sort(v.begin(), v.end());

reverse(begin, end)

反转序列

<algorithm>

reverse(s.begin(), s.end());

容器操作

vector::push_back()

添加元素

<vector>

v.push_back(10);

queue::front()

获取队首元素

<queue>

q.front();

其他

memset(arr, val, size)

内存初始化

<cstring>

memset(arr, 0, sizeof(arr));

tolower(c)

转小写字符

<cctype>

tolower('A') → 'a'

注意事项

  1. 浮点精度pow(2,3) 返回 double 类型,整数运算建议手动计算
  2. 排序自定义sort() 可通过自定义比较函数实现复杂排序
  3. 内存安全memset 的第二个参数是按字节赋值,仅适合初始化为 0 或 -1
  4. 竞赛优化:关闭流同步 ios::sync_with_stdio(false); 可提升输入输出速度