C\C++基础学习(一)

C/C++学习

  1. 不要在同一个程序中使用cout和printf,有时候会出问题

  2. 一个程序最多只能有一个主函数

  3. 变量名的第一个字符必须是字母下划线,除第一个字母外的其他字符必须是字母、数字或下划线。

  4. 绝对值在10^9范围以内的整数或32位整数都可以定义为int型

  5. 如果是10^18以内或者说64位整数,就用 long long 型来存放

  6. 单精度型float只有6~7位小数,双精度型double有15 ~16位小数,一般用double

  7. 对于浮点型来说,只需要记住一点,不要使用float,碰到浮点型的数据都应该用double来存储

  8. 小写字母比大写字母的SACII码值大32(A:65;a = 97)

  9. 字符常量(必须是单个字符)必须用单引号标注

  10. 在计算机内部,字符就是按ASCII码存储的

  11. 常用的转义字符

    1. \n 代表换行
    2. \0 代表空字符NULL,其ASCII码值为0,请注意\0不是空格
  12. ASCII码值为7的字符是控制字符,并且是控制响铃功能的控制字符

  13. C中没有单独一种基本数据类型可以存储字符串(C++中有String类型),只能使用字符数组的方式。字符串常量是由双引号标记的字符集。用“%s”格式输出

  14. 不能把字符串常量赋值给字符变量,所以char a = "abcd"的写法是不允许

  15. 布尔型在C++中可以直接使用,在C语言中必须添加stdbool.h头文件才可以使用

  16. 对于计算机来说,truefalse在存储时分别为1和0,因此如果使用%d输出bool型变量,则true和false会输出1和0;

  17. define 和const都可以定义常量,但是推荐const写法。PS:define还可以定义任意语句或片段。格式:#define 标识符 任意语句或片段 例如:#define ADD(a,b) ( (a) + (b) ),(PS:这里面的括号不能去,如果忘记了看算法笔记25/493)直接用ADD(a,b)来代替a+b

  18. 对于除法运算,要注意,当被除数和除数都是整数型时,并不会得到一个double浮点型的数字,而是直接舍去小数部分(即向下取整)

  19. 对于除法运算,如果除数是0,还会导致程序异常退出或是得到错误的输出“1.#INF00”,因此在出现问题时请检查是否在某种情况下除数为0

  20. 取模运算符%返回被除数与除数相除得到的余数,与除法运算符一样,除数不予许为0,因为当出问题的时候应该先考虑除数是否有可能为0,优先级与除法运算符相同

  21. 自增运算符 i++++i

    • i++ 先使用i进行运算,在把i+1
    • //++i 先把i+1,在进行运算
  22. 条件运算符( ? :)是C语言中唯一的三目运算符 格式:A?B:C 如果A为真,返回B;如果A为假,返回C

  23. 赋值可以通过将其他运算符放在前面来实现赋值操作的简化,这样的代码可以加快编译速度,提高代码的可读性

  24. 在scanf中,除了char数组整个输入的情况不加&之外,其他变量类型都需要加&

  25. 除了%c外,scanf对其他格式(例如%d)的输入是以空白符(即空格、Tab)为结束判断标志的,因此除非使用%c把空格按字符读入,其他情况下都会自动跳过空格

  26. 字符数组使用%s读入的时候以空格和换行为读入结束的标志

  27. 对于double类型的变量,在printf中输出格式是%f,在scanf中却是%lf

  28. 如果想要在printf中输出“%”或者是“\”,则需要在前面再加一个%或\例如

    printf("%%");
    printf("\\");
    
  29. 三种实用的输出格式

    • %md:可以使不足m位的int型变量以m位进行右对位输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样。

      int main(){
      	int a = 123, b = 1234567;
      	printf("%5d\n", a);
      	printf("%5d\n", b);
      	return 0 ;
      }
      

    • %0md:和%md唯一的不同点是,当变量不足m位时,将在前面不足足够的数字0而不是空格。

      int main(){
      	int a = 123, b = 1234567;
      	printf("%05d\n", a);
      	printf("%05d\n", b);
      	return 0 ;
      }
      

      image-20210222121326980

    • %.mf:可以让浮点数保留m位小数,这个”保留“使用的是精度的”四舍五入成双“规则。(可以用在要求输出保留XX位小数或是精确到小数点后XX位的题目上)

      #include <stdio.h>
      int main(){
      	double d1 = 12.3456;
      	printf("%.0f\n", d1);
      	printf("%.1f\n", d1);
      	printf("%.2f\n", d1);
      	printf("%.3f\n", d1);
      	printf("%.4f\n", d1);
      	return 0;
      } 
      
  30. getchar用来输入单个字符,putchar用来输出单个字符,在某些scanf函数使用不便的场合可以使用getchar来输入字符。PS:getchar会识别换行符

  31. typedef:能给复杂的数据类型起一个别名,这样在使用中就可以用别名来代替原来的写法。

    #include <stdio.h>
    typedef long long LL;//给long long 起一个别名LL
    int main(){
    	LL a = 123456789012345, b = 234567890123456;
    	printf("%lld\n", a + b);//输出:358024679135801
    	return 0;
    } 
    
  32. 常用的math函数(需要在程序开头加上头文件math.h)

    • fabs(double x)

      该函数用于对double型变量取绝对值

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db = -12.56;
      	printf("%.2f\n", fabs(db));//输出:12.56
      	return 0;
      }
      
    • floor(double x)和ceil(double x)

      分别用于double型变量的向下取整和向上取整

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db1 = -5.2, db2 = 5.2;
      	printf("%.0f %.0f\n", floor(db1), ceil(db1));//-6 -5
      	printf("%0.f %0.f\n", floor(db2), ceil(db2));//5 6
      	return 0;
      }
      
    • pow(double r,double p)

      该函数返回r^p,要求r和p都是double型

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db = pow(2.0, 3.0);
      	printf("%f\n", db);//8.000000
      	return 0;
      }
      
    • sqrt(double x)

      该函数用于返回double型变量的算术平方根

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db = sqrt(2.0);
      	printf("%f\n", db);//1.414214
      	return 0;
      }
      
    • log(double x)

      该函数用于返回double型变量的以自然对数为底的对数

      PS:C语言中没有对任意底数求对数的函数,因此必须使用换底公式将不是以e为底的对数转换成以e为底的对数,image-20210222132015988

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db = log(1.0);
      	printf("%f\n", db);//0.000000
      	return 0;
      }
      
    • sin(double x)、cos(double x)和tan(double x )

      返回double型变量的正弦值,余弦值和正切值,参数要求是弧度制

      #include <stdio.h>
      #include <math.h>
      const double pi = acos(-1.0);//这里把pi定义为精确值acos(-1.0),因为cos(pi)=-1。
      int main(){
      	double db1 = sin (pi * 45 / 180);//0.707107
      	double db2 = cos (pi * 45 / 180);//0.707107
      	double db3 = tan (pi * 45 / 180);//1.000000
      	printf("%f, %f, %f\n", db1, db2, db3);
      	return 0;
      }
      
    • asin(double x)、acos(double x)和tan(double x)

      返回double型变量的反正弦值,反余弦值和反正切值

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db1 = asin(1);//1.570796
      	double db2 = acos(-1.0);//3.141593
      	double db3 = atan(0);//0.000000
      	printf("%f, %f, %f\n", db1, db2, db3);
      	return 0;
      }
      
    • round(double x)

      该函数用于将double型变量x四舍五入,返回类型也是double型,需进行取整

      #include <stdio.h>
      #include <math.h>
      int main(){
      	double db1 = round(3.40);
      	double db2 = round(3.45);
      	double db3 = round(3.50);
      	double db4 = round(3.55);
      	double db5 = round(3.60);
      	printf("%d, %d, %d, %d, %d\n", (int)db1, (int)db2, (int)db3, (int)db4, (int)db5);
      	return 0;
      }
      
posted @ 2021-02-22 13:50  shiff  阅读(330)  评论(0编辑  收藏  举报