定义二维数组,求一个数在行上是最小,列上也是最小
定义一个n行n列的二维数组,例如:n=4,输入该数组中的全部数据,可以在定义数组中赋予常量值。求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。(注意:它未必是整个数组的最小元素)
定义一个n行n列的二维数组,例如:n=4,输入该数组中的全部数据,可以在定义数组中赋予常量值。
求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。(注意:它未必是整个数组的最小元素)
/* ** -- GET_SMALL.C---------------------------------- ** ZhouFeng 2011/5/06 ** bbs.bccn.net ** ------------------------------------------------ */ #define LINES 10 #define COLUMNS 10 #define TYPE int #define P_ISNULL(p) \ if(p == 0) \ return; #define P_ISNULL_R(p, value) \ if(p == 0) \ return value; typedef TYPE array[][COLUMNS]; struct { int lIndex; int cIndex; }LC_SMALL[LINES > COLUMNS ? LINES : COLUMNS]; /* 结构为保存符合要求的行、列索引 */ #include <stdio.h> #include <stdlib.h> TYPE GetLineMin(array, int); /* 获取行最小值 */ TYPE GetColumnMin(array, int); /* 获取列最小值 */ int GetMin(array ); /* 获取行列都是最小值,返回值为找到符合要求的个数 */ int main(int argc, char* argv[]) { int i, j, a[LINES][COLUMNS]; int smallCount = 0; for(i = 0; i < LINES; ++i) { for(j = 0; j < COLUMNS; ++j) { a[i][j] = rand() % 100; } } smallCount = GetMin(a); printf("---SMALL VALUE IN COLUMNS AND LINES---\n"); for(i = 0; i < smallCount; ++i) { printf("Line[%2d]\tColumn[%2d]\tValue[%2d]\n", LC_SMALL[i].lIndex, LC_SMALL[i].cIndex, a[LC_SMALL[i].lIndex][LC_SMALL[i].cIndex]); } /* Print Array */ printf("--- Array Is Here ---\n"); for(i = 0; i < LINES; ++i) { for(j = 0; j < COLUMNS; ++j) { printf("%2d ",a[i][j]); } printf("\n"); } return 0; } TYPE GetLineMin(array a, int lIndex) { int i; TYPE min; P_ISNULL_R(a, 0) min = a[lIndex][0]; for(i = 0; i < LINES; ++i) { if(min > a[lIndex][i]) { min = a[lIndex][i]; } } return min; } TYPE GetColumnMin(array a, int cIndex) { int i; TYPE min; P_ISNULL_R(a, 0) min = a[0][cIndex]; for(i = 0; i < COLUMNS; ++i) { if(min > a[i][cIndex]) { min = a[i][cIndex]; } } return min; } int GetMin(array a) { int i, j, count = 0; P_ISNULL_R(a, -1) for(i = 0; i < LINES; ++i) { for(j = 0; j < LINES; ++j) { if(a[i][j] == GetLineMin(a, i) && a[i][j] == GetColumnMin(a, j)) { LC_SMALL[count].lIndex = i; LC_SMALL[count].cIndex = j; ++count; } } } return count; }没有输入部分,自己加吧。