第9章 函数

1.函数

典型的ANSI  C函数定义形式:

  返回类型  名称 (形参声明列表)

  函数体

使用一个函数应该以下三个:

函数原型:例 int strbar(char   a);  后面应该加上“  ; ”

函数调用:

函数定义:

传递值:如果要修改主调函数的值,应该使用指针。

返回值类型:如果返回值类型和声明的返回值类型不符,将会被转化

2.递归

定义:函数自己调用自己的调用过程。

用途:

求阶乘:

long rfact(int n)
{
long ans;
if(n==0)
ans=1;
else
ans=n*rfact(n-1);
return ans;
}

 用二进制表示十进制整数

void rfact(int n)
{
    int a;
    a=n%2;
    if(n>=2)
        rfact(n/2);
    printf("%d",a);
    return ;
} 

 3.指针

查找地址:&运算符。

间接运算符:*  。

声明指针:

cahr  * pi  //指向char类型变量的指针

int  *pc  //指向int类型变量的指针

float  *p  //指向flaot类型的指针

指针是一种新的数据类型。

普通变量把  值  作为基本量,而将地址作为通过&运算符获得的派生量

指针变量把  地址  作为基本量,而将值作为通过*获得的派生量。

4.编程练习

5.p276页

#include<stdio.h>
#include<stdbool.h>
void larger(double *n,double *m);//输入两个数,将大值重新赋值给输入
int main (void)
{
    double n,m;
    while (1)
    {
    scanf("%lf%lf",&n,&m);
    larger(&n,&m);
    printf("n=%lf,m=%lf\n",n,m);
    }
    getchar();
    getchar();
    return 0;
}

void larger(double *n,double *m)
{
    if (*n>*m)
    {
        *m=*n;
    }
    else
    {
        *n=*m;
    }
    printf("n=%lf,m=%lf\n",*n,*m);
    return ;
}

8.

#include<stdio.h>
#include<math.h>
double powers(double n,int m);
int main (void)
{
    double n;
    int m;
    scanf("%lf%d",&n,&m);
    printf("%.2lf",powers(n,m));
    getchar();
    getchar();
    return 0;
}

double powers(double n,int m)
{
    double j=1;
    if (m>0)
    {
        for (int i = 0; i <m; i++)
        {
            j=n*j;          
        }
    }
    else if(m<0)
    {
        j=1.0/(powers(n,-m));
    }
    else
    j=0;  
    return j;
} 

9.

#include<stdio.h>
int Fibonacci(int m);
int Fibonacci_1(int m);
int main (void)
{
    int m;
    while (1)
    {
        scanf("%d",&m);
       // Fibonacci(m);
       Fibonacci_1(m);
       printf("第%d个fibonacci是%d\n",m,Fibonacci_1(m));
    }
    getchar();
    getchar();
    return 0;
}
int Fibonacci(int m)
{
    int f1=1,f2=1,num=0;
    if (m<3)
    {
        num=1;
    }
    else
    {
        for (int i = 2; i < m; i++)
        {
            num=f1+f2;
            int tmp=f2;
            f2=f1+f2;
            f1=tmp;            
        }
    }
    return num;
} 
int Fibonacci_1(int m)
{
    int f1=1,f2=1,num=0;
    if (m>2)
    {
        num=Fibonacci_1(m-1)+Fibonacci_1(m-2);
    }
    else
    {       
        num=1;
    }
    return num;
}

猜你喜欢

转载自www.cnblogs.com/suwencjp/p/12372930.html