算法笔记--注意事项

  • 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;        
原文地址:https://www.cnblogs.com/zgqcn/p/12179240.html