• 算法笔记 心得3


    1,6种位运算符

    >>    右移     a<<x    整数a按二进制位右移x位 (算数移位 左0 右1 正数 原码 负数 补码)
    <<    左移     a>>x    整数a按二进制位左移x位
    &      位与     a&b      整数a、b按二进制位对齐,按位进行与运算(除了11得1,其余为0)
    |       位或      a|b       整数a、b按二进制位对齐,按位进行或运算(除了00得0,其余为1)
    ^       位异或  a^b      整数a、b按二进制位对齐,按位进行异或运算(相同为0,不同为1)
    ~       位取反  ~a       整数a的二进制的每一位进行0变1、或1变0操作
     
    2,条件运算符
    (   ?   :    )
    格式:A?B:C;
    条件A为真,返回B的结果,条件A为假,返回C的结果;
    宏定义 定义MAX(a,b)
    #define  MAX(a,b)  ((a)>(b)?(a):(b))
     
    3,赋值表达式
    赋值运算符可以通过将其他运算符放在前面实现赋值运算的简化
    eg. n+=1    等价于n=n+1
          n/=(m+1)    等价于n=n/(m+1)
    赋值符合运算可以加快编译速度,提高代码可读性
     
    4,输入
    scanf函数:
    格式:scanf(“格式控制”,变量地址);
    eg. scanf(“&d”,&n);
    & 取地址运算符
     
    数据类型                          格式符          eg
    int                                     %d               scanf(“%d”,&n);
    long  long                         %lld             scanf(“%lld”,&n);
    float                                  %f                scanf(“%f”,&fl);
    double                              %lf               scanf(“%lf”,&db);
    char                                  %c               scanf(“%f”,&c);
    字符串(char数组)        %s                scarf(“%s”,str);
     
    数组名称本身就代表了这个数组的第一个元素的地址,所以不用再加取地址运算符
    在scanf中除了char数组整个的输入输出情况不加&,其他变量类型都需要加&
     
    scanf的双引号就是整个输入,只不过不数据换成对应的格式符,并把变量的地址按次序写在后面而已。
     
    除%c以外,scanf对其他格式符(如%d)的输入都是以空白符(即空格,Tab)为结束标志判断标志的
    字符数组%s,读入的时候,以空格或换行为读入结束的标志
     
    scanf的%c可以读入空格跟换行的,
     
    要输入两个入”3 4”隔开的字符,两个%d中间可以不加空格
     
    5,输出
    格式:printf(“格式控制”,变量名称);
     
     
    数据类型                  格式        
    int                             %d
    long long                  %lld  
    float                           %f
    double                       %f
    char                           %c
    字符串(char数组) %s
     
    实用的输出格式:
    %md      可以使不足m位的int型变量,以m位进行有对齐输出,其中高位用空格补齐;如果本身超过m位则保持原样
    %0md    区别与上面的是不足m位时,在前面补足够数量的0,而不是空格
    %.mf      让浮点数保留m位小数输出。
     
    6,使用getchar、putchar输入输出字符
    用来输入输出单个字符,
    eg,a=getchar();
    getchar 可以识别和储存换行符
     
     
    7,int main(int argc, char const *argv[])    表示用命令行处理参数
     
    Int main() 表示不打算用命令行处理参数,可以完全省略
    argc是命令行传递到程序中的参数个数
    一个字符串数组(字符指针),表示命令行上提供的各个参数
    argv [0]中的第一个条目是程序名称,其余的是参数名称,因此程序至少有一个参数,最小值argc为1
    屏幕快照 2019-01-07 下午12.07.25.png
     
    8,注释
    1)使用/**/
    注释/*   */之间的内容
     
    2)使用//
    注释一行中,该符号后的内容
     
    9,typedef
    给复杂的数据类型取别名
    Eg. typedef long long LL;
     
    10,常用math函数
    fabs(double x)
    对double型变量x取绝对值
     
    floor(double x)
    对double型变量x向下取整
     
    ceil(double x)
    对double型变量x向上取整
     
    pow(double r, double p)
    用于返回r^p,要求r、p都是整数
     
    sqrt(double x)
    用于返回double型变量额算数平方根
     
    log(double x)
    用于返回double型变量以自然数为底的对数
    C语言中,没有对任意底数求对数的函数,必须使用换底公示 logab=logeb/longea
     
    pi定义为精确值acos(-1.0)          (因为cos(pi)=-1)
    const  double pi=acos(-1.0);
     
    round(double x)
    将double类型变量四舍五入
     
    10,选择结构 if语句
     
    if(A){
     
    }else if(B){
     
    }else{
     
    }
    先判断条件A,再判断条件B,如果都不成立执行else的内容
     
    如果if的条件是"!=0”,可以省略”!=0”
    eg,if(n)就等价于if(n!=0)
     
    如果if的条件是”==0”,则省略”==“,并在表达式前面添加非运算符”!”
    Eg,if(!n)就表示if(n==0)
     
    11,switch
    在条件比较多的情况下,会显得比较精练
    格式:
    switch(表达式){
            case  常量表达式1:
            …
            break;
            case  常量表达式2:
            …
            break;
            case  常量表达式n:
            …
            beak;
            default:
            ...
    }
     
    beark的作用在于结束当前的switch语句
     
    12,while语句
    while(A){
    ...
    }
     
    do{
    ...
    }while(A)
    先执行省略号中的内容一次,再来判断条件A是否成立
     
    13,for语句
    for(表达式A;表达式B;表达式c){
    ….
    }
    a,在for循环开始前,首先执行表达式A
    b,判断表达式B是否成立:若成立,执行省略号的内容;否则退出循环
    c,在表达式执行完毕后,执行表达式C,然后返回b
    注意⚠️:c语言中不允许在A中,定义变量,如(int i的写法是不允许的)
     
    for(循环初始条件;循环条件;循环变量改变){
    ...
    }
     
    for语句下如果只有一个语句块,可以不加大括号
     
    14,break continue
    continue  结束循环的当前轮回,然后进入下一个轮回
     
  • 相关阅读:
    利用rqalpha完成一个股指期货的回测(二) 分钟数据获取和转换
    利用rqalpha完成一个股指期货的回测(一)
    Pandas
    SAR停损指标
    一些简单的指标
    协程--流畅的Python第16章读书笔记
    python初级(302) 8 列表(选择排序练习二)
    博客已转移至 http://blog.yemou.net/
    将博客搬至51CTO
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/fanxinglanyu/p/10275977.html
Copyright © 2020-2023  润新知