咀嚼C語言 二維陣列找鞍點

2022-08-19 05:24:09 字數 1129 閱讀 9212

【要求】找出乙個二維陣列中的鞍點,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。

【咀嚼】我的思路是,某一行上有可能有兩個相等的數,且都是最大值,如果只判斷第乙個數,第二個便不再判斷,而第二個數才是其所在的列上最小的,就會把一些鞍點漏掉(在列上也是如此,相同的都要判斷)。所以我設定一行上可以有乙個以上鞍點,也就是說,如果整個陣列的元素都是相同的,那麼這個陣列裡的每乙個元素都是鞍點。

據於此,我寫下如下**

1 #include

2int main()

3 26

if(c==0)printf("

該二維陣列沒有鞍點

");27

else printf("

該陣列有%d個鞍點

",c);

28 printf("

\n是否繼續?\n輸入1繼續,否則任意鍵退出\n

"); //

end29 scanf("

%d",&ctu);

30 }while(ctu==1);

31return

0;32 }

但是在測試時出現了如下錯誤,即只能判斷出所有的元素都相等的情況,一般情況則無法判斷。

所有的元素都相同,可以正確地把所有的數字都找出來,但是輸入乙個普通的數字,則無法正常找出,下圖

經過分析,原來是在第16與17行之間少了乙個讓判斷標誌b重置為1的語句,導致如果第乙個元素不成立,則b變成了0,之後的每乙個元素都會直接跳出。

修改如下:

1 #include

2int main()

3 27

if(c==0)printf("

該二維陣列沒有鞍點

");28

else printf("

該陣列有%d個鞍點

",c);

29 printf("

\n是否繼續?\n輸入1繼續,否則任意鍵退出\n

"); //

end30 scanf("

%d",&ctu);

31 }while(ctu==1);

32return

0;33 }

測試成功

二維陣列求鞍點

題目內容 給定乙個n n矩陣a。矩陣a的鞍點是乙個位置 i,j 在該位置上的元素是第i行上的最大數,第j列上的最小數。乙個矩陣a也可能沒有鞍點。你的任務是找出a的鞍點。輸入格式 輸入的第1行是乙個正整數n,1 n 100 然後有n行,每一行有n個整數,同一行上兩個整數之間有乙個或多個空格。輸出格式 ...

求二維陣列中的鞍點(c語言)

找出二維陣列中的鞍點,即該位置上的元素在該行上最大,在該列中最小,也可能沒有鞍點。解析 找出在一行中的最大值,確定最大值所在的列,再求出在該列中的最小值所在的行數,比較行是否相等,判斷是否為鞍點。include include intmain int max p,min l,maxj,mini in...

找鞍點C語言

乙個矩陣元素的 鞍點 是指該位置上的元素值在該行上最大 在該列上最小。本題要求編寫程式,求乙個給定的n階方陣的鞍點。輸入第一行給出乙個正整數n 1 n 6 隨後n行,每行給出n個整數,其間以空格分隔。輸出在一行中按照 行下標 列下標 下標從0開始 的格式輸出鞍點的位置。如果鞍點不存在,則輸出 non...