sicily 6496. 二维数组

Description
对于5行,5列的矩阵,问这25个整数中:

1, 最大,最小的数第i行, 第j列的数

2, 对这25个数进行排序,使得从左到右,从上到下非递减,

(即:A[0][0] <= A[0][1] <= ... <= A[0][4] <= A[1][0] <= ...,A[4][4])

正如你所见,矩阵的下标从0开始计数。

Input
每组数据包含5行,5列25个整数,输入有多组,EOF为结束标志

Output
对于每组数据,输出下列格式的信息:

MAX: <i, j>

MIN: <i, j>

array after sorting:

a[0][0] a[0][1] ... a[0][4]

a[1][0] .........

...

a[4][0] ............... a[4][4]

输出矩阵的时候,同一行的数之间是通过制表符分隔开的

用指针做很简单,或者可以新开一个一维数组把每个元素塞进去再排序

View Code
  1 #include<stdio.h>
  2 
  3 #define COLUMN 5
  4 #define ROW 5
  5 #define SIZE 25    
  6 
  7 void maxAndMin( int matrix[][COLUMN] );
  8 void selectionSort( int matrix[][COLUMN] );
  9 void printMatrix( int matrix[][COLUMN] );
 10 
 11 int main()
 12 {
 13     int i, j;
 14     int matrix[ROW][COLUMN] = {0};
 15     
 16     while ( scanf ( "%d", &matrix[0][0] ) != EOF )
 17     {
 18         for ( j = 1; j < COLUMN; j++)
 19         {
 20             scanf("%d", &matrix[0][j] );
 21         }
 22         
 23         for ( i = 1; i < ROW; i++)
 24         {
 25             for ( j = 0; j < COLUMN; j++ )
 26             {
 27                 scanf( "%d", &matrix[i][j] );
 28             }
 29         }
 30         
 31         maxAndMin( matrix );
 32         
 33         selectionSort( matrix );
 34         
 35         printMatrix( matrix );
 36     }
 37     
 38     return 0;
 39 } 
 40 
 41 void maxAndMin( int matrix[][COLUMN] )
 42 {
 43     int i, j;
 44     int max, min;
 45     int rmax = 0, cmax = 0;
 46     int rmin = 0, cmin = 0;
 47 
 48     max = matrix[0][0];
 49     min = matrix[0][0];
 50 
 51     for( i = 0; i < ROW; i++ )
 52     {
 53         for( j = 0; j < COLUMN; j++ )
 54         {
 55             if( matrix[i][j] > max )
 56             {
 57                 max = matrix[i][j];
 58                 rmax = i;
 59                 cmax = j;
 60             }
 61             else if( matrix[i][j] < min )
 62             {
 63                 min = matrix[i][j];
 64                 rmin = i;
 65                 cmin = j;
 66             }
 67         }
 68     }
 69     
 70     printf("MAX: <%d, %d>\n",  rmax, cmax );
 71     printf("MIN: <%d, %d>\n",  rmin, cmin );
 72     
 73     return;
 74 }
 75 
 76 
 77 void selectionSort( int matrix[][COLUMN] )
 78 {
 79     int i, j;
 80     int min;
 81     int temp;
 82     int *p;
 83     
 84     p = &matrix[0][0];
 85     
 86     for ( i = 0; i < SIZE - 1; i++ )
 87     {
 88         min = i;
 89         for ( j = i + 1 ; j < SIZE; j++ )
 90         {
 91             if ( *(p + j) < *(p + min) )
 92             {
 93                 min = j;
 94             }
 95         }
 96         
 97         if ( i != min )
 98         {
 99             temp = *(p + i);
100             *(p + i) = *(p + min);
101             *(p + min) = temp;
102         }
103     }
104     
105     return;
106 }
107 
108 void printMatrix( int matrix[][COLUMN] )
109 {
110     int i, j;
111     
112     printf("array after sorting:\n");
113     
114     for ( i = 0; i < ROW; i++ )
115     {
116         for ( j = 0; j < COLUMN; j++ )
117         {
118             if ( j == COLUMN - 1 )
119             {
120                 printf("%d\n", matrix[i][j]);
121             }
122             else
123             {
124                 printf("%d\t", matrix[i][j]);
125             }
126         }
127     }
128     
129     return;
130 }
原文地址:https://www.cnblogs.com/joyeecheung/p/2797719.html