函数,递归,头文件

求数列2/1,3/2,/5/3……..前20项之和。

# include <stdio.h>
#include <math.h> 
  void main(){
  float f1 = 1,f2 = 2,f3,i,n;
  float sum = 0;
  printf("请任意输入一个整数:\n");
  scanf("%f",&n);
  getchar();
  for(i = 1;i <= n;i++){
          sum += f2/f1;
          f3 = f1 + f2;
          f1 = f2;
          f2 = f3;      
  }
  printf("\n结果是%f",sum);
  getchar();
}

生兔子的简化版(斐波那契数题):

# include <stdio.h>
#include <math.h> 
  void main(){
  int f1 = 1,f2 = 1,f3,i,n;
  int sum = 0;
  printf("请任意输入一个整数:\n");
  scanf("%d",&n);
  getchar();
  for(i = 1;i <= n;i++){
    if( i <= 2 ){
        sum =1;    //第一个月不生,第二个月不生
    }else{
        sum = f1 + f2;  //第三个月后每个月生一对
        f3 = f1 + f2;
        f1 = f2;
        f2 = f3;    
    }
  }
  printf("\n结果是%d",sum);
  getchar();
}

函数:

错误示例:
void main(){
}
void add(int a,int b){
return a+b
};
上述代码问题:返回值类型与类型名不符

函数类型:
1,无参数无返回值
2,有参数无返回值
3,无参数有返回值
4,有参数有返回值

今日重点A:
1,形参变量只有在被调用的时候才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。
2,实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传送给实参。
3,函数调用中发生的数据传送是单向的“值传递”。即只能把实参的值传送给形参而不能把形参的值反向的传送给实参。在内存中,形参与实参占用不同的单元,在函数调用时给形参分配储存单元,并将实参对应的值传递给形参,调用结束后形参单元被释放实参单元仍保留原值。因此在函数调用的过程中,形参的值发生变化,而实参中的值不会变化。

今日重点B:
头文件的自定义调用,避免重定义的问题。
创建一个名字形同的.h头文件,和.c源文件。
在头文件中声明函数,在源文件中定义并实现函数。

递归:

函数递归核心
重复调用自己
一定要有边界,
写算法。

题目:
递归实现十进制二进制的转换
递归实现1加到100的和
递归实现1到100之间的偶数的和

全天回顾

1,什么是函数,函数的机构和定义
2,函数的组成部分。
3,函数的四种形式。
4,头文件的自定义和使用。
5,头疼的递归

中午玩耍的例子:打开百度,监控键盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值