函数的调用

本文详细介绍了函数的调用形式,包括一般形式、函数参数的使用,以及函数调用时的数据传递。接着探讨了函数的嵌套调用,允许在一个函数内部调用另一个函数。最后讨论了函数的递归调用,即函数在执行过程中调用自身,以解决特定问题。通过实例解析了如何利用递归解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一.函数调用形式

一般形式为:函数名 (实参列表);

  1. 函数调用语句:把函数调用单独作为一个语句。

    printf_star();

  2. 函数表达式:函数调用出现在一个表达式中,参与其中运算。

    c=2*max(a,b);

  3. 函数参数:函数调用作为另一个函数调用时的实参。

    m=max(a, max(b,c));

2. 函数调用时数据传递

由前面知道,定义函数时,函数名后面的括号里面的变量是形参(形式参数);在主调函数中调用此函数时括号中的参数是实参(实际参数),实参可以是常量、变量、表达式。

例:输入两个整数,要求输出其中较大者,用函数实现。

3 .函数声明

函数声明:把函数的名字、函数类型以及形参的类型、个数和顺序通知给编译系统,以便调用该函数时系统按照此进行对照检查。

函数声明格式如下:函数原型后面加上分号

int max(int x, int y); //完整清晰,参数意义明确

int max(int, int); //精炼,参数意义不明确

函数声明位置

①在文件开头声明,即本文件都可以使用

②在某个函数内部声明,只能在具有声明的函数内使用

③如果主调函数在被调函数的后面,则可以省略声明

二. 函数的嵌套调用

C语言的函数之间是相互平行的、独立的,不允许函数内部定义另一个函数;但可以函数内部调用一个函数,调用函数又调用另一个函数。也就是嵌套调用

例:输入4个整数,找出其中最大的数。用函数的嵌套调用处理

三. 函数的递归调用

调用一个函数的过程中又出现直接或间接地调用该函数本身,称为递归调用

/*有5个学生坐一起,第五个比第四个大2岁,第四个比第三个大2岁...最后第一个学生说他是10岁,请问第5个学生多大?
用递归方法就n*/

#include <stdio.h>
int main()
{
	int n,m,ret=0;
	printf("请输入您需要计算幂数:\n");
	scanf("%d",&n);
	printf("请输入您需要计算的底数:\n");
	scanf("%d",&m); 
    ret=power(n,m);
    printf("%d",ret);
	
	return 0;
}
  int power(n,m)
  {
  	int ret=0;
  	if(n==0)
  	    ret=1;
    else
    ret=power((n-1),m)*m;
     
	 return ret;
  	
  }

/*5!    fun(5)
5!=4!*5    fun(4)*5
4!=3!*4   fun(3)*4
3!-2!*3   fun(2)*3
2!=1!*2  fun(1)*2
1!=1   */
#include <stdio.h>
 int main()
 {
  int n,ret=0;
  printf("请输入需要计算的阶乘:  ");
  scanf("%d",&n);
  ret=fun(n);
  printf("%d!=%d\n",n,ret);
  return 0;
 	
 }
 int fun(int i)
 {
 	int ret=0;
 	if(i==1)
 	  ret=1;
 	else
 	 ret=fun(i-1)*i;
 	 return ret;
 		
 }

/*有5个学生坐一起,第五个比第四个大2岁,第四个比第三个大2岁...最后第一个学生说他是10岁,请问第5个学生多大?
用递归方法就n*/
#include <stdio.h>
int sum(int n);
 int main()
 {
  int n,ret=0;
  printf("请问您是第几个学生:  ");
  scanf("%d",&n);
  ret=sum(n);
  printf("%d %d",n,ret);
  return 0;
 }
  int sum(int n)
 {
 	int ret=0;
 	if(n==1)
 	 ret=10;
  else
 	ret=sum(n-1)+2;
 	
 	 return ret;

  } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值