程序设计与算法(一)C语言程序设计

第六周(笔记)

6.1 6.2 函数

  • “函数” 可以将实现了每一个功能,并需要反复使用的代码包装起来形成一个功能模块(即写成一个”函数“),那么当程序中需要使用该项功能时,只需要写一条语句,调用那个实现该功能的函数即可。
  • 函数的定义
    • 如果函数不需要返回值,则"返回值类型"可以写void
返回值类型 函数名(参数1类型 参数1名称,参数2类型 参数2名称 ......) {
    语句组(即“函数体”)
}
  • 调用函数和return语句
    • 调用函数:
      • 函数名(参数1,参数2,…)
    • 对函数的调用,也是一个表达式。函数调用表达式的值,由函数内部的return语句决定
      • return 返回值;
    • return语句的功能是结束函数的执行,并将”返回值“作为结果返回,若返回值类型为void,return语句就直接写:return ;
    • 函数调用语句导致程序进入函数执行,return 语句导致程序回到调用语句的后面继续执行
  • 函数的声明
    • 一般来说函数的定义,否则调用语句出错,一般函数的调用语句前面有函数的声明即可
返回值类型 函数名(参数1类型 参数1名称,参数2类型 参数2名称......);
  • 函数参数的传递
    • 函数的形参是实参的一个拷贝,且形参的改变不会影响到实参(除非形参类型是数组或引用)
  • 一维数组作为函数的参数
    • 写法:类型名 数组名[] (不用写出数据元素的个数)
    • 数组作为函数参数是,是传引用的,即形参数组改变了,实参数组也会改变
  • 二维数组作为函数的参数
    • 二维数组作为参数时,必须写明数组有多少列,不用写明有多少行
    • 必须写明列数,编译器才能根据下标算出元素的地址
      • a[i] [j]的地址: 数据首地址 + i * N * sizeof(a[0] [0]) + j * sizeof(a[0] [0]) (N是数组列数)
      • 形参数组的首地址就是实参数组的首地址
void PrintArray(int a[][5]) {
    cout << a[4][3];
}

6.3 递归初步

  • 递归(一个函数自己调用自己就是递归)
    n ! = { 1 n = 0 n ∗ ( n − 1 ) ! n > 0 n!=\begin{cases} 1 & n=0 \\ n*(n-1)! & n>0 \end{cases} n!={1n(n1)!n=0n>0
int Factorial(int n) {
//返回函数n的阶乘
    if (n < 2)
        return 1;//终止条件
    else 
        return n * Factorial(n-1);
}
  • 递归函数需要有终止条件,否则就会无穷递归导致程序无法终止甚至崩溃
  • 斐波那契数列
    Fibonacci sequence:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ……
    f ( n ) = { 0 n = 0 1 n = 1 f ( n − 2 ) + f ( n − 1 ) n > 1 f(n)=\begin{cases} 0 & n=0 \\ 1 & n=1 \\ f(n-2)+f(n-1) & n>1 \end{cases} f(n)=01f(n2)+f(n1)n=0n=1n>1
int fib(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return fib(n - 2) + fib(n - 1);
}

6.4 库函数和头文件

  • 库函数:c/c++标准规定的,编译器自带的函数

  • 头文件:c++编译提供许多头文件,如(cmath,string)

  • 数学函数

    int abs(int x)求整数型x的绝对值
    double cos(double x)求x的预先
    double fabs(doublex)求浮点数x的绝对值
    int ceil(double x)求不小于x的最小整数
    double sin(double x)求x的正弦
    double sqrt(double x)求x的平方根
  • 字符处理函数

    int isdigit(int c)判断c是否是数字字符
    int isalpha(int c)判断c是否是一个字母
    int isalnum(int c)判断c是否是一个数字或者字母
    int islower(int c)判断c是否是一个小写字母
    int isupper(int c)判断c是否是一个大写字母
    int toupper(int c)如果c是一个小写字母,则返回对应的大写字母
    int tolower(int c)如果c是一个大写字母,则返回对应小写字母
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值