网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

函数的定义

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
参数表);

函数的声明是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便调用函数时系统进行对照检查。函数的声明后面要加分号。

如果声明的函数在文件内部,则声明时不用extern,如果声明的函数不在文件内部,而在另一个文件中,声明时须带extern,指明使用的函数在另一个文件中。

【例4-23】函数的使用

#include <reg52.h> //包含特殊功能寄存器库

#include <stdio.h> //包含I/O函数库

int max(int x,int y); //对max函数进行声明

void main(void) //主函数

{

int a,b;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

scanf(“please input a,b:%d,%d”,&a,&b);

printf(“\n”);

printf(“max is:%d\n”,max(a,b));

while(1);

}

int max(int x,int y)

{

int z;

z=(x>=y?x:y);

return(z);

}

【例24】 外部函数的使用

程序serial_initial.c

#include <reg52.h>//包含特殊功能寄存器库

#include <stdio.h> //包含I/O函数库

void serial_initial(void) //主函数

{

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

}

程序y1.c

#include <reg52.h>//包含特殊功能寄存器库

寄存器库

#include <stdio.h> //包含I/O函数库

extern serial_initial();

void main(void)

{

int a,b;

serial_initial();

scanf(“please input a,b:%d,%d”,&a,&b);

printf(“\n”);

printf(“max is:%d\n”,a>=b?a:b);

while(1);

}

2.8.3 函数的嵌套与递归

一.函数的嵌套

在一个函数的调用过程中调用另一个函数。C51编译器通常依靠堆栈来进行参数传递,堆栈设在片内RAM中,而片内RAM的空间有限,因而嵌套的深度比较有限,一般在几层以内。如果层数过多,就会导致堆栈空间不够而出错。

【例25】 函数的嵌套调用

#include <reg52.h> //包含特殊功能寄存器库

#include <stdio.h> //包含I/O函数库

extern serial_initial();

int max(int a,int b)

{

int z;

z=a>=b?a:b;

return(z);

}

int add(int c,int d,int e,int f)

{

int result;

result=max(c,d)+max(e,f); //调用函数max

return(result);

}

main()

{

int final;

serial_initial();

final=add(7,5,2,8);

printf(“%d”,final);

while(1);

}

二.函数的递归

递归调用是嵌套调用的一个特殊情况。如果在调用一个函数过程中又出现了直接或间接调用该函数本身,则称为函数的递归调用。

在函数的递归调用中要避免出现无终止的自身调用,应通过条件控制结束递归调用,使得递归的次数有限。

下面是一个利用递归调用求n!的例子。

【例4-26】递归求数的阶乘n!。

在数学计算中,一个数n的阶乘等于该数本身乘以数n-1的阶乘,即n!=n(n-1)!,用n-1的阶乘来表示n的阶乘就是一种递归表示方法。在程序设计中通过函数递归调用来实现。

程序如下:

#include <reg52.h> //包含特殊功能寄存器库

#include <stdio.h> //包含I/O函数库

extern serial_initial();

int fac(int n) reentrant

{

int result;

if (n==0)

result=1;

else

result=n*fac(n-1);

return(result);

}

main()

{

int fac_result;

serial_initial();

fac_result=fac(11);

printf(“%d\n”,fac_result);

}

  • 下一篇资讯: C语言与MCS-51单片机
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师