zoukankan      html  css  js  c++  java
  • C++ 语言程序设计(清华大学)1

    1.回文数字判断方法(逆过来数值相等):y=y*10+x%10; x /= 10; return(x==y)

    2.int rand(void)函数,所需头文件<cstdlib> ,功能是求出并返回一个伪随机数

      为了使伪随机数每次产生的不同,每次需要输入一个seed,void srand(unsigned int seed),功能是将种子传递给rand()

      想要产生的随机数有范围在1~6; x = 1+ rand()%6;

    3.switch() case语句,可以将两个或多个case共用一个语句,在最后的case用break即可,default 用来表示其他的case情况,也需要加break:

    4.递归 自身调用自身,然后逐级回退,从未知到已知,然后从已知回退到未知。。应用组合问题,结成问题,汉诺塔问题

    5.由n个人里选k个人的组合数=由n-1个人里选k个人的组合数+由n-1个人里选k-1个人的组合数  nCk = n!/[(n-k)!k!]

    6.汉诺塔问题

      public void hanoi(int n, char A, char B, char C) {

        if (n == 1) {
          move(A, C);
            }

        else {
          hanoi(n - 1, A, C, B);//步骤1 按ACB数序执行N-1的汉诺塔移动        把A上的n-1个盘子借助C移动到B
          move(A, C);
    //步骤2 执行最大盘子移动
          hanoi(n - 1, B, A, C);
    //步骤3 按BAC数序执行N-1的汉诺塔移动       把B上的n-1个盘子借助A移动到C
          }

    7.函数的参数传递:引用传递可以实现双向传递(将实参和形参绑定在一起 int& a = x;),常引用作参数可以保证实参数据的安全。

    8.initializer_list 与类有关 ,未完待续..........................................................

    9.内联函数inline:为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题

      inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。

      inline函数仅仅是一个对编译器的建议,所以最后能否真正内联,看编译器的意思,它如果认为函数不复杂,能在调用点展开,就会真正内联,并不是说声明了内联就会内联,声明内联只是一个建议而已。

    10.常量表达式constexpr函数.......................................

    11.带默认参数值的函数:void delay(int loops=1000);  delay(); //ok:loops采用默认值1000  。

         默认参数在函数声明中提供,当又有声明又有定义时,定义中不允许默认参数。如果函数只有定义,则默认参数才可出现在函数定义中。

         如果一个函数中有多个默认参数,则形参分布中,默认参数应从右至左逐渐定义。当调用函数时,只能向左匹配参数。

    12.函数重载:功能类似的多个函数用同一个名字,类型和形参个数 不同

    13.常用系统函数:

    数学<cmath><math.h>:

    1 三角函数 
    double sin (double); 
    double cos (double); 
    double tan (double); 
    2 反三角函数 
    double asin (double); 结果介于[-PI/2, PI/2] 
    double acos (double); 结果介于[0, PI] 
    double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] 
    double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 
    3 双曲三角函数 
    double sinh (double); 
    double cosh (double); 
    double tanh (double); 
    4 指数与对数 
    double exp (double x); e的x次幂
    double pow (double x, double y); x的y次幂
    double sqrt (double); 
    double log (double x); 以e为底的对数,即ln x
    double log10 (double x);log10(x)   以10为底。

    没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2) 
    5 取整 
    double ceil (double); 不小于x的最小整数
    double floor (double); 不大于x的最大整数
    6 绝对值 

    int abs(int);整型
    long labs(long);长整型
    double fabs (double);浮点型

    7 标准化浮点数 
    double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) 
    double ldexp (double x, int p); 与frexp相反, 已知x, p求f 
    8 取整与取余 
    double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 
    double fmod (double, double); 返回两参数相除的余数 

    9.平方根

    double sqrt(double x);

    字符<iostream><ctype.h>:

    int isalpha(int c);c是否为字母
    int isdigit(int c);c是否为数字
    int tolower(int c);将c转换为小写字母
    int toupper(int c);将c转换为大写字母

    字符串<iostream><string.h>:

    char *strcpy(char *sl,char *s2);将字符串s2复制给s1,即覆盖
    unsigned strlen(char *sr);求字符串str长度

    内存操作<iostream><memory.h>:

    void *memcpy(void *d,void *s,int c);将s指向的内存区域的c个字节复制到d指向的区域

    类型转换<iostream><stdlib.h>:

    int atoi(char *s);将字符串转化为整数
    char *itoa(int v,char *s,int x);将整数v按x进制转成字符串s

    时间<ctime><time.h>:

    time_t time(time_t *timer);返回1970/1/1零点到目前的秒数

    其他<iostream><stdlib.h>:

    srand(unsigned seed);设置随机数的种子
    int rand();产生0-RAND_MAX的随机数
    exit(int);终止正在执行的程序

  • 相关阅读:
    5.5团队冲刺08
    5.6团队冲刺09
    5.4团队冲刺07
    5.3团队冲刺06
    5.2团队冲刺05
    第14 周作业
    CentOS Linux release 7.4 yum 安装mariadb-5.5.65 登录报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2)
    第13周作业
    解析函数
    npm模块安装机制
  • 原文地址:https://www.cnblogs.com/yawenw/p/10673424.html
Copyright © 2011-2022 走看看