常用头文件的可调用函数的归类笔记

版权声明:本文为博主原创,未经博主允许不得转载 https://blog.csdn.net/Sherry_Yue/article/details/83661165

1. #include <iostream.h>

在c++中,一般#include < iostream.h > 和 using namespace std一起出现(#include < iostream >一样的,编译器不同的缘故,接下来就按照我的编译器为标准,不一一提示了 )

#include <iostream>
using namespace std;

int main()
{
    cin>>n;
    cout<<n<<endl;
}

控制:
(1) cin >> :输入
(2) cout << :输出
(3) endl:换行

2. #include <math.h>

控制:
(1) sqrt(x):计算参数x的平方根
(2) pow(x,y):计算以x为底的y次方值(即x^y)
(3) sin(x):求sin(x),其中x是弧度值
(4) abs(x):求x的绝对值
(5) exp(x):计算以e为底的x次方值(即e^x)
(6) log(x):计算以e为底的x对数值(即ln(x))
(7) log10(x):计算以10为底的x对数值(即lg(x))

3. #include < iomanip >

控制:
(1) dec:十进制

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int number=1001;
    cout<<dec<<number<<endl;//输出1001
}

(2) hex:十六进制

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int number=1001;
    cout<<hex<<number<<endl;//输出3e9
}

(3) oct:八进制

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int number=1001;
    cout<<oct<<number<<endl;//输出1751
}

(4) setw(n):设域宽为n个字符

用法一

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    float pi=3.14159;//包含小数点在内,域宽为 7
    cout<<setw(4)<<pi<<endl;//不按 4位宽度输出,而是按原来样式 3.14159的 7位输出
    cout<<setw(6)<<pi<<endl;//不按 6位宽度输出,而是按原来样式 3.14159的 7位输出
    cout<<setw(7)<<pi<<endl;//刚好 7位输出
    cout<<setw(8)<<pi<<endl;//最左边空 1格,然后输出 7位的 3.14159
    cout<<setw(10)<<pi<<endl;//最左边空 3格,然后输出 7位的 3.14159
}

用法二

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout<<setw(8)<<10<<20<<endl;//先空 6格,再输出 1020
    //注意,整数 20并没有按宽度为 8输出,而是紧挨着10
}

(5) setfill(a):填充字符a

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout<<setfill('*')
        <<setw(2)<<21<<endl//域宽 2位,整数 21就已经占满,所以直接输出 21
        <<setw(3)<<21<<endl//输出 *21
        <<setw(4)<<21<<endl;//输出 **21
    cout<<setfill(' ');//恢复默认设置
}

(6) setiosflags(ios::fixed):固定浮点数显示
(7) setiosflags(ios::scientific):指数显示
(8) setprecision(n):显示数精度为n位

用法一:普通表示输出中,setprecision(n)表示有效位数

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double num=22.0/7;
    cout<<num<<endl;//没有设有效位数,默认 6位,输出 3.14286
    cout<<setprecision(0)<<num<<endl;//C++最小有效位数是 1,所以就算设 0,也按 1位有效位走,输出 3
    cout<<setprecision(1)<<num<<endl;//输出 3
    cout<<setprecision(2)<<num<<endl;//输出 3.1
    cout<<setprecision(3)<<num<<endl;//输出 3.14
    cout<<setprecision(4)<<num<<endl;//输出 3.143(都遵循四舍五入)
}

用法二:确定表示的输出中,setprecision(n)表示小数位数

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double num=22.0/7;
    cout<<num<<endl;//没有设有效位数,默认 6位,输出 3.14286
    cout<<setiosflags(ios::fixed);
    cout<<setprecision(0)<<num<<endl;//输出 3
    cout<<setprecision(1)<<num<<endl;//输出 3.1
    cout<<setprecision(2)<<num<<endl;//输出 3.14
    cout<<setprecision(3)<<num<<endl;//输出 3.143
    cout<<setprecision(4)<<num<<endl;//输出 3.1429(都遵循四舍五入)
    cout<<resetiosflags(ios::fixed);//清除格式化标记,恢复默认设置
}

用法三:指数形式输出中,setprecision(n)表示小数位数

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double num=22.0/7;
    cout<<num<<endl;//没有设有效位数,默认 6位,输出 3.14286
    cout<<setiosflags(ios::scientific);
    cout<<setprecision(0)<<num<<endl;//输出 3e+000
    cout<<setprecision(1)<<num<<endl;//输出 3.1e+000
    cout<<setprecision(2)<<num<<endl;//输出 3.14e+000
    cout<<setprecision(3)<<num<<endl;//输出 3.143e+000
    cout<<setprecision(4)<<num<<endl;//输出 3.1429e+000
    cout<<resetiosflags(ios::scientific);//清除格式化标记,恢复默认设置
}

(9) setiosflags(ios::left):左对齐
(10) setiosflags(ios::right):右对齐

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout<<setiosflags(ios::right)
        <<setw(5)<<"1"
        <<setw(5)<<"2"
        <<setw(5)<<"3"<<endl;
    cout<<resetiosflags(ios::right);//清除格式化标记,否则接下来会显示不出来靠左的数据输出

    cout<<setw(5)<<"1"
        <<setw(5)<<"2"
        <<setw(5)<<"3"<<endl;

    cout<<setiosflags(ios::left)
        <<setw(5)<<"1"
        <<setw(5)<<"2"
        <<setw(5)<<"3"<<endl;
}

输出结果如下:

    1    2    3//先空4格再输出,右对齐
1    2    3    //先输出再空4格,左对齐

(11) setiosflags(ios::uppercase):十六进制大写输出
(12) setiosflags(ios::lowercase):十六进制小写输出

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int number=1001;
    cout<<hex<<setiosflags(ios::uppercase)<<number<<endl;//输出3E9
}

(13) setiosflags(ios::showpoint):强制显示小数点

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout<<6.0/2<<endl;
    cout<<setiosflags(ios::showpoint)<<6.0/2<<endl;
}

输出结果如下:

3
3.00000

(14) setiosflags(ios::showpos):强制显示正负号

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout<<5<<" "<<-10<<endl;
    cout<<setiosflags(ios::showpos)<<5<<" "<<-10<<endl;
}

输出结果如下:

5 10
+5 -10

4. #include < conio.h >

控制:
(1) getche():会等待你按下任意键,再继续执行下面的语句(我比较喜欢用于运行exe文件时让窗口不是一下子消失,而是按下任意键后消失)

5. #include < mem.h >(这个是c语言,如果在c++里调用可以用#include < stdlib.h >代替)

控制:
(1) memset():一个字节一个字节把整个数组设置为一个制定的值,第一个参数是数组的起始地址,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型是:void * memset(void * , int , unsigned);这个函数通常为新申请的内存做初始化工作,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

#include <mem.h>

int main()
{
    int a[50];
    int b[500];
    memset(a,0,50*sizeof(int));
    memset(b,0,500*sizeof(int));
}

(2) memcpy():其函数原型是:void * memcpy(void * d, const void * s , size_t n);从源src中拷贝n个字符到目标dest中,第一个参数是目标数组的起始地址,第二个参数是源数组的首地址,第三个参数是要拷贝的长度(字节数,不是元素个数)。

#include <iostream>
#include <men.h>
#include <string.h>
using namespace std;

int main()
{
    char src1[50] = "helloworld,guess";
    char dest1[50];
    memcpy(dest1, src1, strlen(src1)+1);//全部复制
    cout<<dest<<endl;

    char src2[50] = "helloworld,guess";
    char dest2[50];
    memcpy(dest2, src2+4, 6*sizeof(char));// 从第 4 个字符(o)开始复制,连续复制 6 个字符(oworld)
    dest2[6]='\0';
    cout<<dest<<endl;
    return 0;
}

6. #include < stdlib.h >

控制:
(1) rand()%b:产生伪随机数(即每次都一样的随机数)

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    int magic1,magic2;
    magic1=rand()%b;//产生[0,b-1]之间的伪随机数
    magic2=rand()%b+a;//产生[a,a+b-1]之间的伪随机数
    return 0;
}

(2)srand(seed):产生随机数

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    int seed,magic;
    cin>>seed;
    srand(seed);
    magic=rand()%100+1;//产生[1,100]之间的随机数,但如果输入的数一样,则产生的随机数每次都一样
    return 0;
}

(3)malloc():获得堆内存
(4)free():释放堆内存

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int size;//元素个数
    int *array;//一个拥有内存的指针可以作为一个数组使用
    cout<<"请输入数组长度:";
    cin>>size;
    
   array = (int *)malloc( size*sizeof(int));//分配堆内存

    for(int i=0;i<size;++i)
        cin>>array[i];

    for(int i=0;i<size;++i)
        cout<<array[i]<<" ";
    cout<<endl;
    free( array );//释放堆内存
    return 0;
}

7. #include < ctime >

(1) time():为程序员提供代表时间的字符串,使用NULL作为函数参数,使其不具备此功能

#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    int magic;
    srand(time(NULL));
    magic=rand()%100+1;//产生[1,100]之间的随机数,随机数每次都不一样
    return 0;
}

8. #include < string >

(1) strlen():是一个计数器,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char array[100];
    int size;
    cin>>array;//只有字符型数组可以这样写输入的代码
    size=strlen(array);
    cout<<size<<endl;
    return 0;
}

(2) strcmp():比较两个字符串,设这两个字符串为str1,str2,若str1等于str2,则返回零;若str1小于str2,则返回负数;若str1大于str2,则返回正数。其原型为int strcmp( const char * str1, const char * ste2 )

#include <iostream>
#include <string>
using namespace std;
int main()
{
    char a[10] = "hello";
    char b[10] = "hello";

    if( strcmp( a, b ) == 0 ) cout<<"相等"<<endl;
    else cout<<"不相等"<<endl;
    return 0;
}

(3) strcpy():把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。其原型为int strcmp( const char * str1, const char * ste2 ) 这个函数一般用于对字符数组的赋值(因为我们不能对字符数组赋予一个字符串)
错误代码:

char a[10];
a = "hello";

正确代码:

char a[10];
char b[10];
strcpy(a,"hello");
strcpy(b,a);

函数strcpy()仅能对以‘\0’作结束符的字符数组进行操作。若要对其他类型的数组赋值可调用函数memcpy() (这个函数在上面介绍过)

以上这些也就是我目前学到的常用的积累,之后会继续补充

猜你喜欢

转载自blog.csdn.net/Sherry_Yue/article/details/83661165
今日推荐