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


    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]='';
        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():是一个计数器,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’’为止,然后返回计数器值(长度不包含’’)。

    #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()仅能对以‘’作结束符的字符数组进行操作。若要对其他类型的数组赋值可调用函数memcpy() (这个函数在上面介绍过)

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

  • 相关阅读:
    drf请求生命周期
    正向代理和反向代理
    cbv源码分析
    Python搭建调用本地dll的Windows服务(浏览器可以访问,附测试dll64位和32位文件)
    Python实现聊天机器人接口封装部署
    Python实现机器人语音聊天
    Python爬虫下载美女图片(不同网站不同方法)
    微信小程序-点餐系统
    Win10系统Python3.8的升级与安装
    Python破解Wifi密码思路
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626189.html
Copyright © 2020-2023  润新知