1.万能头文件
#include<bits/stdc++.h>
这个头文件包含了几乎我们要用到的所有函数的头文件,包括iostream、cmath等等,用着非常的方便。但是也有一个巨大的缺点,就是很多用不到的头文件也被包含进去了,这就使得程序的运行效率降低。用的时候要想想是否要追求效率再用。
2.sqrt函数
sqrt函数可以开根号,但很多人都没记清其头文件,其实有math.h和cmath两种.前者是兼容C风格的库文件,后者是标准c++库文件
头文件
#include<cmath>
#include<math.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>