一个函数调用另外一个函数:
1.被调用函数必须是已经定义的函数
2.如果使用库函数,应该在本文件开头加相应的#include指令
3.如果使用自己定义的函数,该函数的位置在调用它的函数后面,应该声明。
例:用递归方法求n!
#include
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
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
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
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
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
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);
}