1.函数声明
1.1函数声明格式(函数原型后面加上分号)
int max(int x,int y); //完整清晰,参数意义明确
int max(int,int); //精炼,参数意义不明确
1.2函数声明位置
1.2.1 在文件开头声明,即本文件都可以使用
1.2.2 在某个函数内部声明,只能在具有声明的函数内使用
1.2.3 如果主调函数在被调函数的后面,则可以省略声明
例:文件开头声明(主函数明确,如果子函数过多,主函数不太好找,因此,子函数放后面更好一下,这样只需声明就行)
#includeint nian(int s); int main() { int a,b; printf("已知第一个学生10岁,下一个比上一个大两岁n请输入您要求第几个人的岁数:"); scanf("%d",&a); b=nian(a); printf("第%d个人的岁数为%d",a,b); return 0; } int nian(int s) { int ret; if(s==1) ret=10; else ret=nian(s-1)+2; return ret; }
2.函数嵌套调用
C语言的函数之间是相互平行的、独立的,不允许函数内部定义另一个函数;但可以函数内部调用一个函数,调用函数又调用另一个函数,也就是嵌套调用。
例:输入4个整数,找出其中最大的数,用函数的嵌套调用处理
#includeint mm(int num_1,int num_2) { //int ret; //ret=num_1>num_2 ?num_1:num_2; return num_1>num_2 ?num_1:num_2; } int numax(int num_1,int num_2,int num_3,int num_4) { int ret; ret=mm(num_1,num_2); ret=mm(ret,num_3); ret=mm(ret,num_4); return ret; } int main() { int num_1,num_2,num_3,num_4,max; printf("比较四个数,找出最大值(输入时中间用空格隔开):n"); scanf("%d %d %d %d",&num_1,&num_2,&num_3,&num_4); max=numax(num_1,num_2,num_3,num_4); printf("这几个数中的最大值为:%d",max); return 0; }
3.函数递归调用
调用一个函数的过程中又出现直接或间接的调用该函数本身,称为递归调用。
例:用递归方法求n!
#include暑期编程PK赛 得CSDN机械键盘等精美礼品!int fun(int num); //声明函数 int main() { int a,b; printf("求该数的阶乘n请输入这个数:"); scanf("%d",&a); b=fun(a); printf("这个数的阶乘为:%d",b); return 0; } int fun(int num) { int ret; if(num==1) ret=1; else ret=fun(num-1)*num; return ret; }



