定义二维数组,求一个数在行上是最小,列上也是最小
定义一个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;
}没有输入部分,自己加吧。