c语言用函数求矩阵鞍点 c++求矩阵鞍点

求教:C语言求矩阵的鞍点问题// 下面是你c语言用函数求矩阵鞍点的代码c语言用函数求矩阵鞍点我加了个 注释
#include stdio.h
void main()
{
while(1)
{
int a[4][4];
int j,i,m,t,x,y;
printf("please input sixteen numbers:\n");
for(j=1;j=4;j++)
for(i=1;i=4;i++)
scanf("%d",a[j-1][i-1]);
printf("\n");
for(j=1;j=4;j++)
【c语言用函数求矩阵鞍点 c++求矩阵鞍点】 {
if(a[j-1][0]=a[j-1][1])
m=a[j-1][0];
else
m=a[j][1];//这里出问题了应该是 m = a[j-1][1];
for(i=3;i=4;i++)
if(a[j-1][i-1]=m)
m=a[j-1][i-1];
for(x=1;x=4;x++)
{
if(a[j-1][x-1]==m)
{
if(a[0][x-1]=a[1][x-1])
t=a[0][x-1];
else
t=a[1][x-1];
for(y=3;y=4;y++)
if(a[y-1][x-1]=t)
t=a[y-1][x-1];
if(m==t)
printf("此数列c语言用函数求矩阵鞍点的鞍点为元素a[%d][%d],对应数值大小为 %d\n",j-1,x-1,m);
}
}
}
}
}
c语言 鞍点问题#include stdio.h
#ifndef NULL
#define NULL ((void *)0)
#endif
int *FindSaddle(int nRow, int nCol, int *pMatrix);
int main(int argc, char *argv[])
{
int *pRes = NULL;
// 矩阵定义代码段, 如
int A[3][3] = {{1,2,3},{4,5,6},{7,8,9},};
pRes = FindSaddle(/*nRow*/3, /*nCol*/3, /*pMatrix*/A[0]);
if (pRes != NULL)
{
printf("%d",*pRes);
}
else
{
printf("未找到\n");
}
return 0;
}
int *FindSaddle(int nRow, int nCol, int *pMatrix)
{
int i, nMin;
int j, nMax;
for (i=0; inRow; i++)
{
for (nMin=0, j=1; jnCol; j++)
{
if (pMatrix[i*nCol + j]pMatrix[i*nCol + nMin])
nMin = j;
}
for (nMax=0, j=1; jnRow; j++)
{
if (pMatrix[j*nRow + nMin]pMatrix[nMax*nRow + nMin])
nMax = j;
}
if (i == nMax)
return pMatrix[i*nRow + nMin];
//return pMatrixi*nRow + nMin;
}
return NULL;
}
望采纳c语言用函数求矩阵鞍点!c语言用函数求矩阵鞍点!c语言用函数求矩阵鞍点?。?
C语言编程:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大 , 在该列上最小 。也可能没有鞍点 。思路:遍历矩阵的每一行,找出最大值,在最大值对应的列找最小值,然后判断最大值和最小值的位置是否相等 。具体代码如下:
#include stdio.h
#includestdlib.h
void FindSaddlePoint(int a[][20], int m, int n);
main()
{
int a[20][20];//数组储存矩阵
int m,n;//分别表示矩阵的行数和列数
int i,j;//循环变量
//人机交互输入数据
printf("Input m,n:\n");
scanf("%d,%d",m,n);
printf("Input matrix:\n" );
for(i=0;im;i++)
{
for(j=0;jn;j++)
scanf("%d",a[i][j]);
}
FindSaddlePoint(a,m,n);
system("pause");
}
//函数功能:输入矩阵数组、行数和列数,判断是否存在鞍点并输出结果
void FindSaddlePoint(int a[][20], int m, int n)
{
int i,j,k;//循环变量
int b,c,d;//储存下标:b和d储存最大值的下标,d储存最小值的下标
int flag=0;//判断是否有鞍点:值为1则有,值为0则无
int max,min;//每行中的最大值和每列中的最小值
//第一层循环遍历每一行
for(i=0;im;i++)
{
//先该行中的第一个数赋值给最大值并保存其位置
max=a[i][0];
b=i;
d=0;
//找出每一行中的最大值的值及位置
for(j=0;jn;j++)
{
if(maxa[i][j])
{
max=a[i][j];
b=i;
d=j;
}
}
//先将找到的最大值赋值给最小值,作为初值并存储下标(由于列是一样的所以只需要储存行的位置即可)

推荐阅读