一个函数调用另外一个函数:
1.被调用函数必须是已经定义的函数
2.如果使用库函数,应该在本文件开头加相应的#include指令
3.如果使用自己定义的函数,该函数的位置在调用它的函数后面,应该声明。
例:用递归方法求n!
#include<stdio.h> int main(){ int fac(int n); int n;int y; printf("input an integer number:"); scanf("%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); }
汉诺塔问题
#include<stdio.h> int main(){ void hanoi(int n,char one,char two,char three); int m; printf("the number of diskes:"); scanf("%d",&m); printf("move %d dishes:\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,two,three); move(one,three); hanoi(n-1,two,one,three); } } void move(char x,char y){ printf("%c--%c\n",x,y); }
例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。
#include<stdio.h> int main(){ int max(int x,int y); int a[10],m,n,i; printf("10 integer numbers:\n"); for(i=0;i<10;i++){ scanf("%d",&a[i]); printf("\n"); } for(i=1,m=a[0],n=0;i<10;i++){ if(max(m,a[i]>m));{ m=max(m,a[i]); n=i; } } printf("largest number is %d\n",m); printf("%dth number.\n",n+1); }
例7.10 有一个一维数组score,内放10个学生成绩,求平均成绩。
#include<stdio.h> int main(){ float average[10],aver;int i; printf("input 10 scores:\n"); for(int i=0;i<10;i++){ scanf("%f",&score[i]); } printf("\n"); aver=average(score); printf("%5.2f\n",aver); return 0; } float average(float array[10]){ int i; float aver,sum=array[0]; for(i=0;i<10;i++){ sum=sum+array[i]; aver=sum/10; } return(aver); }
例7.13 有一个3*4的矩阵,求所有元素中的最大值
#include<stdio.h> int main(){ int max_value(int array[][4]); int a[3][4]={{1,3,5,7},{2,4,6,8},{11,13,15,17}}; printf("max value is %d\n",max_value(a)); return 0; } int max_value(int array[][4]){ int i,j,max; max=array[0][0]; for(i=0;i<3;i++){ for(j=0;j<4;j++){ if(array[i][j]>max) max=array[i][j]; } } return max; }
例7.18 调用函数,求3个整数中的大者
#include<stdio.h> int main(){ int max(); extern int A,B,C; scanf("%d %d %d",&A,&B,&C); printf("max is %d\n",max()); return 0; } int A,B,C; int max(){ int m; m=A>B?A:B; if(C>m)m=C; return(m); }