进击的KFC:第六节:C语言:函数

回顾:1.printf 输出函数,⽤于输出⼀个信息

        2.scanf 输⼊函数,⽤于从键盘输⼊⼀个信息

        3.strlen 求字符串⻓度函数,⽤于求指定字符串的⻓度

        4.strcpy 字符串拷⻉函数,⽤于实现字符串的赋值

               它们都是函数,都实现了某⼀功能。

1.函数的概念:函数是具有特定功能的代码段

   函数的使⽤可以省去重复代码的编写,⼤⼤简化程序,提⾼开发效率。

2.函数的定义:   返回值类型  函数名(形式参数列表)

                           {

                                      语句      

                                  return 返回值;

                           }

                          返回值类型可以是所有的基本类型 int ,float...也可以没有返回值,没有返回值用void  没有返回值的时候,不用return返回值

函数的四种形态:

 (1) 无返回值无参数

 void myprintf()

{

     printf("无返回值无参数的函数\n");

}

 (2) 有返回值 无参数的函数

int returnValue()

{

    return 3;

}

 (3)有返回值,有参数

              // 多个参数 ,中间用逗号隔开

              // 注意:参数的名字不能相同

              // 函数的参数 需要在函数体中去使用

              // 参数的两种形式:

                       // 1.形式参数 函数声明时的参数

                      // 2.实际参数 函数调用时的参数

              // 函数调用的时候,相当于,实际参数赋值给形式参数:num1 = 3;  参数间的传递是一个值的传递

 // 计算 两个 整数的

int sumNumber(int num1, int num2)

{   

    return num1 + num2;

}


 (4) 无返回值有参数 函数

  // 打印两个 整数 的和

void sumNumber2(int n1 , int n2)

{

     printf("%d ",n1 + n2);

}


3.一个完整的函数分为三个部分   : 1. 函数的声明 2.函数的实现3.函数的调用(一般是主函数main中去调用)

// 创建一个类 分为2部分

// .h文件 为接口文件,头文件 , 用来写函数的声明的部分

// .m文件 为实现文件  ,      写函数的实现部分

实例:   编写函数dayOfYear(year, mouth,day),使得函数返回由这三个参数确定的那⼀天是⼀年中的第⼏天。

声明:int dayOfYear(int year,int month,int day);   // 写在.h文件里   


 

 实现:int dayOfYear(int year,int month,int day) // 写在.m文件里   

{

    

    // 用数组 保存12个月 每个月天数

    int array[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    // 判断润年:能够被400整除 或者 能够被4整除但不能被100整数

    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {

        array[1] = 29;

    }

    // 声明一个变量 存放天数和

    int sum = 0;

    // 循环求和

    for (int i = 0; i < month - 1; i++) {

        // 把每个月的天数加上

        sum = sum + array[i];

    }

    

    // 把天加上

    sum = sum + day;

    

    // 返回

    return sum;

}

调用:printf("%d " ,dayOfYear(2015,10,17));    // 一般写在main函数中调用

//  注意:如果要用哪个.h文件下的函数,就要在main函数那个文件下用import "xxx.h";导入


4. 变量的作用域:   局部变量,函数中定义的变量  , 它的作用域: 由该变量一下,至最近的大括号 之间 是该局部变量的作用域

                              全局变量,在main函数外面又不在其他函数中定义的变量叫全局变量     

                  如果全局变量 和 局部变量 重名 那么是以局部变量为准


5.递归

// 需求 : 一个整形数的阶乘:n!

    n = 1 或者 0 ;阶乘为1;

   n > 1 阶乘 为 n * (n - 1 )!;    例如: 当 n = 5,    5 * (5 - 1)!

// 自己调用自己的函数:递归函数

// 切记 : 需要一个出口 或者 多个出口  , n == 1就是这道题的出口

int function(int n)

{

       if(n == 1 || n == 0){

                  return 1;

            } 

       int result = 0;

       result = n * function(n - 1);

       return result;

}

    

实例2;//  计算 s = (1*1)!+(2*2)! + (3*3)!

// 思路: 把复杂的公式 ,分析拆解

// 1.先平方 2. 阶乘 3.连加

   int function1(int n)

{ 

    // 声明一个结果

    int sum = 0 ;

    for(int i = 1; i <=n ; i++) {

        sum = sum + function(i * i);

    }

    return sum;

}









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值