
//编写一个函数:tt指向一个M行N列的二维数组,求出二维数组每列中最小的元素,并依次放入pp所指的一维数组中。二维数组中的数在主函数中赋予。
//重难点:求出的是每一列的最小值,这里要注意,学会简化代码,省去一些多余定义的变量。
#include <stdio.h>
#define M 3
#define N 4
void fun ( int tt[M][N], int pp[N] )
{
//简化代码
int i, j;//不定义变量n,使用i即可。不定义min直接赋值给pp即可。
for (i = ; i < N; i++)//注意这里i代表的列信息。
{
pp[i] = tt[][i];
for (j = ; j < M; j++) if (tt[j][i] < pp[i]) pp[i] = tt[j][i];//for和if语句都只有一句,可以省略大括号。
}
/* int i, j, min,n=0;
for (i = 0; i < N; i++)
{
min = tt[0][i];
for (j = 0; j < M; j++)
{
if (tt[j][i] < min)
min = tt[j][i];
}
pp[n++] = min;
}*/
}
main( )
{
void NONO( );
int t [ M ][ N ]={{,, ,},
{,, ,},
{,, ,}};
int p [ N ], i, j, k;
printf ( "The original data is : \n" );
for( i=; i<M; i++ ){
for( j=; j<N; j++ )
printf ( "%6d", t[i][j] );
printf("\n");
}
fun ( t, p );
printf( "\nThe result is:\n" );
for ( k = ; k < N; k++ ) printf ( " %4d ", p[ k ] );
printf("\n");
NONO( );
}
void NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
int i, j, k, m, t[M][N], p[N] ;
FILE *rf, *wf ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(m = ; m < ; m++) {
for( i=; i<M; i++ ){
for( j=; j<N; j++ )
fscanf (rf, "%6d", &t[i][j] );
}
fun ( t, p ) ;
for ( k = ; k < N; k++ ) fprintf (wf, " %4d ", p[ k ] ) ;
fprintf(wf, "\n") ;
}
fclose(rf) ;
fclose(wf) ;
}