例7.12
#include <stdio.h>
int main ( )
{
void sort ( int array[ ] , int n) ;
int a[ 10 ] , i;
printf ( "enter array:\n" ) ;
for ( i= 0 ; i< 10 ; i++ )
scanf ( "%d" , & a[ i] ) ;
sort ( a, 10 ) ;
printf ( "The sorted array:\n" ) ;
for ( i= 0 ; i< 10 ; i++ )
printf ( "%d " , a[ i] ) ; printf ( "\n" ) ;
return 0 ; }
void sort ( int array[ ] , int n)
{ int i, j, k, t; for ( i= 0 ; i< n- 1 ; i++ )
{
k= i;
for ( j= i+ 1 ; j< n; j++ )
if ( array[ j] < array[ k] )
k= j;
t= array[ k] ; array[ k] = array[ i] ; array[ i] = t;
}
}
例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 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分,最高分,最低分
#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 score:" ) ;
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+ = array[ i] ;
}
aver= sum/ n;
return ( aver) ;
}
例7.15 若外部变量与局部变量同名,分析结果
#include <stdio.h>
int a= 3 , b= 5 ;
int main ( )
{
int max ( inta, int b) ;
int a= 8 ;
printf ( "max=%d\n" , max ( a, b) ) ;
return 0 ;
}
int max ( inta, 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)
{
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 ( )
{
intfac ( int n) ;
int i;
for ( i= 1 ; i<= 5 ; i++ )
printf ( "%d!=%d\n" , i, fac ( i) ) ;
return 0 ;
}
intfac ( int n)
{
staticint f= 1 ;
f= f* n;
return ( f) ;
例7.18 调用函数,求3个整数中的大者
#include <stdio.h>
int main ( )
{
int max ( ) ;
extern int A, B, C;
printf ( "Please enter three interger numbers\n" ) ;
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) ;
}