1.万能头文件
#include<bits/stdc++.h>
这个头文件包含了几乎我们要用到的所有函数的头文件,包括iostream、cmath等等,用着非常的方便。但是也有一个巨大的缺点,就是很多用不到的头文件也被包含进去了,这就使得程序的运行效率降低。用的时候要想想是否要追求效率再用。
2.sqrt函数
sqrt函数可以开根号,但很多人都没记清其头文件,其实有math.h和cmath两种.前者是兼容C风格的库文件,后者是标准c++库文件
头文件
#include<cmath> #include<math.h>th.h>
示例:
int a=9; cout<<sqrt(a); 输出: 3
3.gets、gets_s和fgets函数
在c中我们可以使用的gets()函数,在c++中于2011年已经被删除了,所以在使用的时候会报错。现在一般用gets_s或者fgets来代替gets。其中fgets和gets是C标准库的IO函数,gets_s是微软自创的。
但是我在用的过程中发现虽然在visual studio中gets_s可以被编译,但是在PTA的编译器中,不认识gets和gets_s,但认识fgets。此处介绍一下fgets函数
函数原型
char *fgets(char *str, int n, FILE *stream);
- str-- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
- n-- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
- stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
功能
从指定的流 stream 读取一行,并把它存储在str所指向的字符串内。当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
示例
char a[1000]; fgets(a, 1000,stdin);
4.setw函数
在cout<<处使用,作用是设置域宽
头文件
#include<iomanip>
示例
int a=2; cout<<setw(5)<<a; 输出: 2
5.strlen函数
用来求字符串的长度。从头往后数,直到遇到/0(最终统计长度不包括/0)
头文件
#include<string.h>
示例
char a[10]; cin>>a; cout<<strlen(a); 输入: 123 输出: 3
把strlen和sizeof作比较,会发现它们其实很像,只不过sizeof比strlen多数了一个。
6.sort函数
头文件
#include<algorithsm>
模板
默认 (1) template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last); 自定义 (2) template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
默认是按照升序进行排序,使用的方法是快速排序
示例
vector<int>a = { 5,7,3,1,5,9,2,4,2 }; sort(a.begin(), a.end()); for (int i = 0; i < 9; i++) cout << a[i] << " "; 输出:1 2 2 3 4 5 5 7 9
注意:sort () 只能对提供随机访问迭代器的容器中的元素进行排序,一般的数组不行!
7.辗转相除法求最大公约数
在PTA中可以直接调用__gcb函数,不用自己写,O(∩_∩)O。但是我在vs中试了试却不行,
┭┮﹏┭┮。还是自己掌握一种实现方法吧。
实现
int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); }
原理:a/b=c 余r,通过数学证明证明,gcd(a,b)是等于gcd(b,r)的
8.abs函数
对整数求绝对值
头文件
#include<stdlib.h>