//所謂鞍點就是在所在行上最大,所在列上最小,有且只有一個,甚至沒有
#include<stdio.h>
int main(void)
{
int a[3][3]={0}; //數組初始化
int i,j,k;
int max,min,maxi=0,maxj=0,flag;
printf("輸入元素的值:\n");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n數組顯示為:\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%-5d",a[i][j]);
printf("\n");
}
printf("\n開始找鞍點:\n");
for(i=0;i<3;i++)//以行為單位,開始尋找
{
max=a[i][0];
for (j=0;j<3;j++)
if ( a[i][j]>max )
{
max=a[i][j];
maxi=i; maxj=j;
}
flag=0;
for (k=0;(k<3)&&(flag==0);k++)
if ( min<a[k][maxj] )
{
min=a[k][maxj];
flag=1; break;
}
if (flag=0)
printf("該數組的鞍點是%d,在第%d行,第%d列。\n",a[j][k],j+1,k+1);
else printf("該數組中不存在鞍點。\n");
return 0;
}
}
根據我對題目的理解,8是鞍點,可實際運行起來有問題。
修改了一下邏輯。你語法上有錯誤。你在判斷if(flag=0)中flag=0是一個賦值語句,永遠為真.還有 min沒有賦值
if ( min<a[k][maxj] )
{
min=a[k][maxj];
flag=1; break;
}
改為:
if ( max > a[k][maxj] )
{
flag=1;
}