(1)整数类:short;int;long;long long;  (unsigned)//希望有unsigned long long long long long long long......
    (2)浮点型:float;double;
    (3)其他类:bool;char;string;struct(用于定义数据类型);
2.变量(数组、函数、结构体等) 命名规则:
    (1)只能有字母、数字和_;
    (2)数字不能开头; 
    (3)名称严格区分大小写,且不能重复;
3.编程中的结构: 
    (1)顺序结构; //顺序结构yyds
    (2)分支结构:
        if(){       } else {        }
        switch(){       }
        ?: 
    (3)循环结构:
        while(){        }
        do{     }while()
        for(;;) {       }
    (4)循环跳转:
        break 从break语句开始,退出当前循环
        continue 从continue语句开始,跳过本次循环 
4.数组:一个存储多个数据的变量的集合。
    (1)数组下标:从0开始,到size()-1结束.
    (2)除char[]外,不能直接输入和输出 
    (3)初始化的方式a[]={0} ;
    (4)二维数组的定义:如果一维数组中的元素又是一个数组,先行后列。 
5.字符数组:char a[101] ;
    (1)求长度: strlen(a)
    (2)带空格的输入:cin.getline(a,101); 
    (3) 字符串连接:strcat(a,b);  将B连接在A的后面 
        字符串复制:strcpy(a,b);  将B复制给A
6.字符串string:string a; 
    (1)求长度: a.length(); 
    (2)带空格的输入:getline(cin,a);
    (3) 字符串连接:a+=b;  将B连接在A的后面 
        字符串复制:a=b;   将B复制给A
        字符串截取:s=s.substr(a,b) ;   从下标a开始截取b个字符
        字符串插入:s.insert(a,b) ;     在下标a前插入字符串b 
        字符串查找:s.find(a);   在字符串s中查找字符串a,找到返回第一位字符的下标, 
                                未找到返回unsigned long long的最大值 
7.函数:
    (1)包含:函数名、函数的参数及数据类型、函数的返回值类型(void)、函数体
    (2)常用函数:max(a,b);  min(a,b);  要求a,b数据类型相同 
                整数:abs(a);  浮点数:fabs(a);   数据类型区别 
                sqrt(a);   pow(a,b);   返回值为double类型 
                sort(a,a+n);   注意下标区别   
                swap(a,b);   无特殊要求。 
                memset(a,0,sizeof(a));   数组初始化
    (3)自定义函数:
        (1)质数判断:时间复杂度为 根号n。 
                int zs(int x){   if(x<=2) return 0;  for(int i=2;i*i<=x;i++) if(x%i==0) return 0; return 1;     }
        (2)数字翻转
                int fz(int x){   int a=0;  while(x) { a=a*10+x%10; x/=10;   }  return a;}
        (3)进制转换 (十进制转二进制:递归实现) 
                void zh(int x) {    if(x==0) return ;  zh(x/2);  cout<<x%2; }
        (4)递归 (fib)
                int fib(int x){   if(x<=2) return 1;   return fib(x-1)+fib(x-2);    }
8.进制转换与原反补码
    (1)进制转换:模除法。
    (2)特殊的进制转换:
        (1)二进制与八进制:
            二转八:二进制从最低位开始每3位转换为一个八进制的1位,顺序书写即可。 
            八转二: 八进制的每位转换成一个3位的二进制数,顺序书写即可。 
        (2)二进制与十六进制:
            二转十六:二进制从最低位开始每4位转换为一个十六进制的1位,顺序书写即可。 
            十六转二:十六进制的每位转换成一个4位的二进制数,顺序书写即可。 
    (3) 原码:用最高位表示数字的符号,0为正数,1为负数
        反码:正数不变,负数除符号位外,全部取反
        补码:正数不变,负数为反码+1
9.运算优先级
() 大于! ++ -- 大于 * / % 大于 + - 大于 >> << 大于  > >= < <= 
大于 == != 大于 && 大于 || 大于 = += -=... 
10.输入与输出
    (1)cin 与 cout  iostream 
    (2)scanf 与 printf  cstdio
    (3)速度:scanf/printf快于cin/cout    '\n'快于endl
    (4) %d-int/bool   %f-float  %lf-double %lld-long long  %c-char  %s-char[] 
        %u-unsigned int  %llu-unsigned long long   
        %5d-整数至少5位场宽,右对齐   %-5d-整数至少5位场宽,左对齐
        %5s-字符串场宽至少为5,右对齐 %-5s-字符串场宽至少为5,左对齐   
        %5.3s-字符串从右往左截取3位,场宽5,右对齐  %-5.3s-字符串从右往左截取3位,场宽5,左对齐 
        %5.3lf-保留3位,场宽5,右对齐  %-5.3lf-保留3位,场宽5,左对齐
        iomanip   cout<<fixed<<setprecision(3)<<a;   保留3位小数
11.位运算: 
    (1) &   二进制中,有0则为0 。  if(x%2 == 1)相当于 if(x&1 == 1) 
    (2) |   二进制中,有1则为1 。 
    (3) ^   二进制中,相同为0,不同为1 。a^a=0  a^0=a   
    (4) ~   ~a=-a-1 
    (5) >>  a>>=1相当于a/=2 
    (6) <<  a<<=1相当于a*=2     
12.排序:
    (1)冒泡:for(i 表示轮) for(j 表示下标)  比较与交换 
    (2)选择:for(i 表示轮) 找最小(大)值, 与第i个进行交换
    (3)插入:for(i 表示轮) 把当前元素依次向前对比和交换,比其小则停止
    (4)桶排:用数组下标进行排序的方式
    (5)快排:sort(a,a+n)   
    (6)结构体排序:使用struct 和 sort进行排序,需要自定义cmp函数 
13.高精度:
    (1)加法和减法:用数组的每一位存数字的每一位。
    (2)步骤:  存储-转换-计算-特判-输出
14.递推与递归:
    (1)递推用循环、递归用函数
    (2)递推关系与初始条件 
15.文件流//真的?
    (1) freopen("1.in","r",stdin);
    (2) freopen("1.out","w",stdout);

1 条评论

  • 1