sprintf
sprintf()最常见的应用之一莫过于把整数打印到字符串中,如:
sprintf(s, “%d”, 123); //把整数123打印成一个字符串保存在s中;
sprintf(s, “%8x”, 4567); //小写16进制,宽度占8个位置,右对齐。
atoi(atof)(atol)
功能:把字符串转换成整型数(浮点数)(长整数);
表头文件 #include
程序例:
#include <stdlib.h>
#include <stdio.h>
int main() {
int n;
char *str = "1234";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0; }
运行结果是:
string =1234 integer=1234
运行结果是:
string =1234 integer=1234
lower_bound(upper_bound)函数
头文件:#include
lower_bound(a,a+10,x);//在数组a中寻找大于或等于x的第一个位置,所以使用的时候常常要减a。
upper_bound(a,a+10,x);//在数组a中寻找大于x的第一个位置。
sscanf函数
功能:从一个字符串中读进与指定格式相符的数据。
例子:
char buf[512] = ;
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
结果为:123456
next_permutation函数(STL)
功能:字典序列举排列。
例子:
sort(p,p+n);
do
{
for(i=0;i<n;i++)printf("%d ",p[i]);
printf("\n");
}while(next_permutation(p,p+n));
strchr(s,c)函数
strchr(s,c):查找字符串s中首次出现字符c的位置;如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
memset(a,0,sizeof(a))函数
头文件:#include
只可以填充0或者-1。
fill(arr, arr + n, key)函数
头文件:#include
floor函数
floor(x)返回的是小于或等于x的最大整数。
如: floor(10.5) == 10 floor(-10.5) == -11
ceil函数
ceil(x)返回的是大于或等于x的最小整数。
如: ceil(10.5) == 11 ceil(-10.5) ==-10
unique()函数
去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。它是c++中的函数,所以头文件要加#include
int num[100];
unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。
substr()函数
substr(字符串,截取开始位置,截取长度) //返回截取的字
substr(‘Hello World’,0,1) //返回结果为 ‘H’ *从字符串第一个字符开始截取长度为1的字符串
string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = “56789”
string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = “567”
nth_element()
通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置,并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的。
可以用来求解中位数:
int mid = n%2 == 1 ? n/2 : n/2-1;
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
nth_element(a,a+mid,a+n);
printf("%d\n",a[mid]);
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!