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


//編寫一個函數: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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM