Rss & SiteMap

课外天地 李树青 http://www.njcie.com

李树青 论坛 南京 财经 课外天地
共1 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[推荐]第八课代码讲义:函数

1楼
admin 发表于:2015/11/17 7:48:36

封装功能,可以反复调用,在代码更新时也希望尽量减少修改量
int main()
{
        int i;
        scanf("%d",&i);
        printf("%d\n",i);
       
       
        scanf("%d",&i);
        printf("%d\n",i);
       
       
        scanf("%d",&i);
        printf("%d\n",i);
}


函数代码
int main()
{
    func();
    func();
}

func()
{
    int i;
    scanf("%d",&i);
    printf("%d\n",i);
}


主函数也是函数


使用参数:
int main()
{
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    printf("最大值为:%d\n",(i>j)?i:j);

    scanf("%d",&i);
    scanf("%d",&j);
    printf("最大值为:%d\n",(i>j)?i:j);
}


函数使用:
int main()
{
    func();
    func();
}

func()
{
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    printf("最大值为:%d\n",(i>j)?i:j);
}

使用参数可以让调用者自己决定数值的输入方式
int main()
{
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    func(i,j);

    func(j,i);
}

func(int i,int j)
{

    printf("最大值为:%d\n",(i>j)?i:j);
}

返回值
既然参数可以决定如何获取数值,为什么不可以调用者自主决定结果值的处理方式呢?

int main()
{
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    printf("最大值为:%d\n",func(i,j));

    int temp=func(j,i);
    func(func(j,i),i);
    printf("temp=%d\n",temp);
}

int func(int i,int j)
{
    return (i>j)?i:j;
}


内存分配原理解释
int main()
{
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    func(i,j);
    printf("%d<%d\n",i,j);
}

void func(int i,int j)
{
    int temp;
    if(i>j)
    {
        temp=i;
        i=j;
        j=temp;
    }
}


建议在使用前声明函数原型
int main()
{
    void func(int ,int ,int)
    int i,j;
    scanf("%d",&i);
    scanf("%d",&j);
    func(i,j);
    printf("%d<%d\n",i,j);
}

void func(int i,int j,int t)
{
    int temp;
    if(i>j)
    {
        temp=i;
        i=j;
        j=temp;
    }
}

函数嵌套调用
int main()
{
    int max4(int ,int ,int ,int);
    int num1,num2,num3,num4,max;
    scanf("%d,%d,%d,%d",&num1,&num2,&num3,&num4);
    max=max4(num1,num2,num3,num4);
    printf("max=%d\n",max);
}

int max4(int num1,int num2,int num3,int num4)
{
    int max2(int num1,int num2);
    int max;
    max=max2(num1,num2);
    max=max2(max,num3);
    max=max2(max,num4);
    return max;
}

int max2(int num1,int num2)
{
    return (num1>num2)?num1:num2;
}

递归调用
int main()
{
    int num=4;
    printf("%d=%d\n",num,factorial(num));
}

int factorial(int n)
{
    if(n>1)
        return n*factorial(n-1);
    else
        return 1;
}

全局变量(尽量不要使用)
int num;

int main()
{
    printf("%d\n",num);
    func();
    printf("%d\n",num);
}

void func()
{
    num=4;
}

静态变量
int main()
{
    printf("%d\n",func());
    printf("%d\n",func());
    printf("%d\n",func());
}

int func()
{
    static int temp=1;
    temp++;
    return temp;

}

 

 

 

 

 

 

 

共1 条记录, 每页显示 10 条, 页签: [1]

Copyright ©2002 - 2016 课外天地.Net
Powered By Dvbbs Version 8.3.0
Processed in .01660 s, 2 queries.