第七章 用函数实现模块化程序设计
#例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},{15,17,34,12}};
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.14有一个一位数组,内放十个学生的成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
#include<stdio.h>
float Max=0,Min=0;
int main()
{ float average(float array[ ],int n);
float ave,score[10];
int i;
printf("Please enter 10 scores:");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
ave=average(score,10);
printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);
return 0;
}
float average(float array[ ],int n)
{int i;
float aver,sum=array[0];
Max=Min=array[0];
for(i=1;i<n;i++)
{if(array[i]>Max) Max=array[i];
else if(array[i]<Min) Min=array[i];
sum=sum+array[i];
}
aver=sum/n;
return (aver);
}
运行结果如下:
###例7.15若外部变量与局部变量同名,分析结果。
#include<stdio.h>
int a=3,b=5;
int main()
{
int max(int a,int b);
int a=8;
printf("max=%d\n",max(a,b));
return 0;
}
int max(int a,int b)
{ int c;
c=a>b? a:b;
return (c);
}
运行结果如下:
####例7.16考察静态局部变量的值。
#include<stdio.h>
int main()
{int f(int);
int a=2,i;
for(i=0;i<3;i++)
printf("%d\n",f(a));
return 0;
}
int f(int a)
{auto int b=0;
static c=3;
b=b+1;
c=c+1;
return (a+b+c);
}
运行结果如下:
#####例7.17输到1到5的阶乘值。
#include<stdio.h>
int main()
{int fac(int n);
int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
return 0;
}
int fac(int n)
{ static int f=1;
f=f*n;
return (f);
}
运行结果如下:
######例7.18调用函数,求三个整数中的大者。
#include<stdio.h>
int main()
{int max();
extern int A,B,C;
printf("Please enter three integer numbers:");
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);
}
运行结果如下: