• C基础


    1. 问题:pow(a,2)会报错:undefined reference to `pow'
    原因:像 pow(2,3); 这种调用,gcc 在编译时就可以将其替换为对应的值(gcc 优化的一部分),从而不需要链接 pow 所在的数学库 libm;
    而像 pow(a,2); 这种调用,一般无法做这种替换,因此需要链接 libm。
    解决:加选项-lm
    其他:
    -lm:寻找libm.o这个库的某个函数的所有函数
    函数库是由库函数构成,函数有时候要多个库支持
    math并不是一个库而是函数,函数有时候要多个库支持,所以要用-lm的方法把所有库整合一起才能调用这个函数


    2. printf()

    1) 多进制转换
    %d:十进制
    %o:八进制
    %x:十六进制
    注:无二进制的表示方法
    
    2) 占位宽、左右对齐
    printf("%10d",a);    //占10位,且右对齐
    printf("%-10d",a);    //占10位,且左对齐
    
    3) 小数位数控制
    a=3.14;    //3.140000
    printf("%.2f",a);    //3.14
    printf("%5.2f",a);    //||3.14
    注:占位小于实际位数:
    printf("%3.2f",a);    //3.14
    
    4) *号 - 代表任何整数
    a=3.14,b=5,c=2;
    printf("%.*f
    ",c,a);    //3.14 , * = c
    printf("%*.*f
    ",b,c,a);


    3. 输入不定个数的一组数
    1) malloc()
    void* malloc(unsigned size);
    在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,
    返回该区域的首地址.

    2) realloc()
    void* realloc(void* ptr, unsigned newsize);
    给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度.

    例:
    #include <stdio.h>
    void main()
    {
        int a,i=0,j;
        int *stack=(int *)malloc(1*sizeof(int));
        while(scanf("%d",&a)!=EOF){
            stack[i++]=a;
            stack=(int *)realloc(stack,sizeof(int));
        }   
        for(j=0;j<i;j++){
            printf("%d ",stack[j]);
        }   
    }
  • 相关阅读:
    Python Challenge 第十二关
    Python Challenge 第十一关
    Python Challenge 第十关
    Python Challenge 第九关
    Python Challenge 第八关
    Python Challenge 第七关
    zepto
    zepto
    zepto
    zepto
  • 原文地址:https://www.cnblogs.com/stellar/p/8710289.html
Copyright © 2020-2023  润新知