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]
输出矩阵的时候,同一行的数之间是通过制表符分隔开的
用指针做很简单,或者可以新开一个一维数组把每个元素塞进去再排序

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 }