// 对被调用函数的声明和函数原型
在一个函数中调用另一个函数(即被调用函数)需要具备如下条件:
a.首先被调用的函数必须是已经定义的函数(是库函数或用户自己定义的函数)
b.如果使用库函数,应该在本文开头用#include 指令将调用有关库函数时
所需用到的信息"包含"到本文件中来。
c.如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)
的后面(在同一个文件中),应该在主调函数中对被调用的函数作声明(declaration)。
声明的作用是把 函数名、函数参数的个数和参数类型等信息通知编译系统。
输入两个实数,用一个函数求出它们之和。
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- float add(float x,float y);
- float a,b,c;
- printf("Please enter a and b:");
- scanf_s("%f,%f",&a,&b);
- c=add(a,b);
- printf("sum is %f\n",c);
- return 0;
- }
- float add(float x,float y)
- {
- float z;
- z=x+y;
- return(z);
- }
函数的首行(即函数首部)称为函数原型(function prototype)
函数原型的一般形式为
1.函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,...,参数类型n 参数名n);
2.函数类型 函数名(参数类型1,参数类型2,...,参数类型n);
// 函数的嵌套调用
输入4个整数,找出其中最大的数。
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int max4(int a,int b, int c,int d);
- int a,b,c,d,max;
- printf("Please enter 4 interger numbers:");
- scanf_s("%d %d %d %d",&a,&b,&c,&d);
- max=max4(a,b,c,d);
- printf("max=%d \n",max);
- return 0;
- }
- int max4(int a,int b,int c,int d)
- {
- int max2(int a,int b);
- int m;
- m=max2(a,b);
- m=max2(m,c);
- m=max2(m,d);
- return(m);
- }
- int max2(int a,int b)
- {
- if(a>=b)
- return a;
- else
- return b;
- }
// 函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
int f(int x)
{
int y,z;
z=f(y);
return(2*z);
}
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int age(int n);
- printf("NO.5,age:%d\n",age(5));
- return 0;
- }
- int age(int n)
- {
- int c;
- if(n==1)
- c=10;
- else
- c=age(n-1)+2;
- return(c);
- }
用递归方法求n!
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int fac(int n);
- int n;
- int y;
- printf("input an integer number:");
- scanf_s("%d",&n);
- y=fac(n);
- printf("%d!=%d\n",n,y);
- return 0;
- }
- int fac(int n)
- {
- int f;
- if(n<0)
- printf("n<0,data error!");
- else
- if(n==0||n==1)
- f=1;
- else
- f=fac(n-1)*n;
- return(f);
- }
Hanoi(汉诺)塔问题
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- void hanoi(int n,char one,char two,char three);
- int m;
- printf("input the number of diskes:");
- scanf_s("%d",&m);
- printf("The step to move %d diskes:\n",m);
- hanoi(m,'A','B','C');
- }
- void hanoi(int n,char one,char two,char three)
- {
- void move(char x,char y);
- if(n==1)
- move(one,three);
- else
- {
- hanoi(n-1,one,three,two);
- move(one,three);
- hanoi(n-1,two,one,three);
- }
- }
- void move(char x,char y)
- {
- printf("%c-->%c\n",x,y);
- }