1. 程式人生 > >計算機二級-C語言-程序設計題-190119記錄-求出一個二維數組每一列的最小值。

計算機二級-C語言-程序設計題-190119記錄-求出一個二維數組每一列的最小值。

amp c語言 編寫 數組 void 記錄 pan close 二維

//編寫一個函數:tt指向一個M行N列的二維數組,求出二維數組每列中最小的元素,並依次放入pp所指的一維數組中。二維數組中的數在主函數中賦予。

//重難點:求出的是每一列的最小值,這裏要註意,學會簡化代碼,省去一些多余定義的變量。

 1 #include <stdio.h>
 2 #define  M  3
 3 #define  N  4
 4 void  fun ( int tt[M][N], int pp[N] )
 5 {
 6     //簡化代碼
 7     int i, j;//不定義變量n,使用i即可。不定義min直接賦值給pp即可。
 8     for (i = 0; i < N; i++)//
註意這裏i代表的列信息。 9 { 10 pp[i] = tt[0][i]; 11 for (j = 0; j < M; j++) if (tt[j][i] < pp[i]) pp[i] = tt[j][i];//for和if語句都只有一句,可以省略大括號。 12 } 13 /* int i, j, min,n=0; 14 for (i = 0; i < N; i++) 15 { 16 min = tt[0][i]; 17 for (j = 0; j < M; j++) 18 {
19 if (tt[j][i] < min) 20 min = tt[j][i]; 21 } 22 pp[n++] = min; 23 }*/ 24 } 25 main( ) 26 { 27 void NONO( ); 28 int t [ M ][ N ]={{22,45, 56,30}, 29 {19,33, 45,38}, 30 {20,22, 66,40}}; 31 int p [ N ], i, j, k;
32 printf ( "The original data is : \n" ); 33 for( i=0; i<M; i++ ){ 34 for( j=0; j<N; j++ ) 35 printf ( "%6d", t[i][j] ); 36 printf("\n"); 37 } 38 fun ( t, p ); 39 printf( "\nThe result is:\n" ); 40 for ( k = 0; k < N; k++ ) printf ( " %4d ", p[ k ] ); 41 printf("\n"); 42 NONO( ); 43 } 44 void NONO( ) 45 {/* 請在此函數內打開文件,輸入測試數據,調用 fun 函數, 46 輸出數據,關閉文件。 */ 47 int i, j, k, m, t[M][N], p[N] ; 48 FILE *rf, *wf ; 49 rf = fopen("in.dat","r") ; 50 wf = fopen("out.dat","w") ; 51 for(m = 0 ; m < 10 ; m++) { 52 for( i=0; i<M; i++ ){ 53 for( j=0; j<N; j++ ) 54 fscanf (rf, "%6d", &t[i][j] ); 55 } 56 fun ( t, p ) ; 57 for ( k = 0; k < N; k++ ) fprintf (wf, " %4d ", p[ k ] ) ; 58 fprintf(wf, "\n") ; 59 } 60 fclose(rf) ; 61 fclose(wf) ; 62 }

計算機二級-C語言-程序設計題-190119記錄-求出一個二維數組每一列的最小值。