zoukankan      html  css  js  c++  java
  • 算法笔记--注意事项

    • cin和cout消耗的时间比scanf和printf多得多。不要再同一个程序中同时使用cout和printf。
    • 10以内或者说32位整数,用int型存放; 1018 以内或者说64位整数,用long long。
    • 对于浮点型来说,不要用float,碰到浮点型的数据都应该用double存放。
    • 对于字符 , 小写字母比大写字母的ASCΙΙ码大32.
    • 符号常量定义时候不要使用末尾分号
    #define 标识符 常量
    #define pi 3.14
    • define还可以定义任何语句与片段(尽量不用,使用一定要多个括号)
    • #define ADD(a,b) ((a)+(b))
      int main(){
           int num1 = 3, num2 =5;
           printf("%d", ADD(num1, num2));
           return 0;        
      }
    • 另一种定义常量的方法const(优先考虑)
    const 数据类型 变量名 = 常量 ;
    const double pi  = 3.14 ; 
    • 在scanf中,除了char数组整个输入的情况不加&之外,其他变量类型都要加&。
    • %md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样。
    • %0md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用0补齐;如果变量本身超过m位,则保持原样。
    • getchar(), purchar() 用于输入/输出字符
    • gets(), puts()用于对一整行数组进行输入/输出
    • math函数
    fabs(double x)                     用于对double型变量取绝对值
    floor(double x)                    用于对double型变量向下取整
    ceil(double x)                     用于对double型变量向上取整
    pow(double r, double p)          返回rp,要求r和p都是double型
    sqrt(double x)                     返回double型变量的算术平方根         
    log(double x)                      返回double型变量的以自然对数为底对数
    sin,cos,tan                        参数要求是弧度制sin(pi*45 / 180)
    asin,acos,atan                     反正弦,反余弦,反正切
    round(double x)                    四舍五入
    • 如果数组大小较大(大概106级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的局部变量来自静态存储区,允许申请的空间较大。
    • memset对数组中的每一个元素赋予相同的值,使用赋值0或者-1,其他用fill函数
    memset(数组名,值,sizeof(数组名));
    
    e.g.
        memset(a,0,sizeof(a));
    • 数组以 结尾(不同于空格),在开通字符数组时,要至少比实际存储字符串的长度多1。在利用scanf() 和 gets() 输入字符串时,会自动添加,其他要手动输入(如getchar函数),否则会出现乱码。
    • sscanf和sprintf,用于转换输出或输入
    sscanf(str,"%d", &n);
    sprintf(str,"%d", &n);
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    
    int main(){
    
        char a[100]="2020:5.20,Hello";
    
        int int2020;
        double double520;
        char charHello[100];
    
        sscanf(a, "%d:%lf,%s", &int2020, &double520, &charHello);
        printf("%d	 %.2f	 %s	", int2020, double520, charHello);
    
        char b[100];
        sprintf(b, "%d:%.2lf,%s", int2020, double520, charHello);
        printf("
    %s", b);
    
        return 0;
    
    }

    输出结果:

           2020 5.20 Hello
           2020:5.20,Hello

      

    • 在利用数组做参数时,在函数中对数组元素的修改等于对原数组修改。数组做参数时,一维不需要写长度,二维数组要填写长度,调用时只需要填写数组名。
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    
    void change(int a[], int b[][5]){
        a[0] = 1;
        a[1] = 3;
        a[2] = 5;
        b[0][0] = 5;
    
    }
    
    int main(){
        int a[3] = {0};
        int b[5][5] = {0};
        change(a,b);
        for(int i=0; i < 3; i++){
            printf("%d
    ", a[i]);
        }
    
        return 0;
    
    }
    

      

    • 定义单/多枚指针时
    int* p;    
    int *p, *q, *x;        
  • 相关阅读:
    c读取文本文档
    java类中定义接口
    android selector
    android listview
    android继承Dialog实现自定义对话框
    移植net-snmp到开发板(mini210)
    [BZOJ1901]Zju2112 Dynamic Rankings
    [BZOJ3524][Poi2014]Couriers
    [codeforces722D]Generating Sets
    [codeforces722C]Destroying Array
  • 原文地址:https://www.cnblogs.com/zgqcn/p/12179240.html
Copyright © 2011-2022 走看看