C语言在线答疑
找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。提示:①一个二维数组可能有鞍点也可能没有鞍点,若有鞍点,则只有一个。②准备两组测试数据:③用sca...
找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。提示:①一个二维数组可能有鞍点也可能没有鞍点,若有鞍点,则只有一个。②准备两组测试数据:③用scanf函数从键盘输入数组各元素的值,检查结果是否正确。如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请同学们修改程序以实现之。
第三问要怎么改才能运行 展开
第三问要怎么改才能运行 展开
1个回答
展开全部
设计思路:
1/先找出每一行的最大数,记录位置到数组中。
2/找出每一列最小的数,得出位置和之前数组比对,如果相通,说明是鞍点。
在火车上,只能用手机敲代码。代码如下:
#include
typedef struct POS{ //位置坐标结构体
int M;
int N;
};
void Show(int **rect, POS p); //显示对应的点
POS FindRowMax(int **rect, int m, int n);
POS FindColMini(int **rect, int m, int n);
int main( )
{
int i = 0, j = 0, flag = 0;
int rectArray[3][4] = {{1,2,6,4},{5,6,7,8},{9,10,11,12}};
POS rowMaxPosArray[3] = {};
POS colMiniPosArray[4] = {};
for ( i = 0; i < 3; i++)
{
rowMaxPosArray[i] = FindRowMax( rectArray, i, 4);
}
for ( i = 0; i < 4; i++)
{
colMiniPosArray[i] = FindColMini( rectArray, 3, i);
}
for ( i = 0; i < 3; i++)
{
for ( j = 0; j < 4; i++)
{
if (rowMaxPosArray[i] == colMiniPosArray[j])
{
Show(rectArray, rowMaxPosArray[i] );
flag = 1;
}
}
}
if (!flag)
{
printf("不存在鞍点\n");
}
return 0;
}
1/先找出每一行的最大数,记录位置到数组中。
2/找出每一列最小的数,得出位置和之前数组比对,如果相通,说明是鞍点。
在火车上,只能用手机敲代码。代码如下:
#include
typedef struct POS{ //位置坐标结构体
int M;
int N;
};
void Show(int **rect, POS p); //显示对应的点
POS FindRowMax(int **rect, int m, int n);
POS FindColMini(int **rect, int m, int n);
int main( )
{
int i = 0, j = 0, flag = 0;
int rectArray[3][4] = {{1,2,6,4},{5,6,7,8},{9,10,11,12}};
POS rowMaxPosArray[3] = {};
POS colMiniPosArray[4] = {};
for ( i = 0; i < 3; i++)
{
rowMaxPosArray[i] = FindRowMax( rectArray, i, 4);
}
for ( i = 0; i < 4; i++)
{
colMiniPosArray[i] = FindColMini( rectArray, 3, i);
}
for ( i = 0; i < 3; i++)
{
for ( j = 0; j < 4; i++)
{
if (rowMaxPosArray[i] == colMiniPosArray[j])
{
Show(rectArray, rowMaxPosArray[i] );
flag = 1;
}
}
}
if (!flag)
{
printf("不存在鞍点\n");
}
return 0;
}
追答
字数超过了?。。以后有电脑的时候再把定义的函数实现
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询