題目:
請程式設計找出乙個m*n矩陣中的鞍點,即該位置上的元素是該行上的最大值,是該列上的最小值。如果矩陣中沒有鞍點,則輸出「no saddle point!」
已知函式原型:
void findsaddlepoint(int a[n], int m, int n);
在該函式中輸出有無鞍點的資訊。
程式執行結果示例1:
input m,n:
3,3↙
input matrix:
1 2 3
4 5 6
7 8 9
a[0][2] is 3
程式執行結果示例2:
input m,n:
3,4↙
input matrix:
3 4 7 5
0 1 8 2
9 3 2 6
no saddle point!
解析:由於二維陣列作為函式形參時,必須顯示地指定陣列第二維(列)的長度,因此程式在定義符號常量n時,n必須與主函式中定義的二維陣列a的第二維(列)長度一致,否則將出現錯誤。也就是說當二維陣列a的列數變化時,必須修改程式中對符號常量n的定義。為了避免這個問題,使程式能適應二維陣列列數的變化,應使用二維陣列的列指標(*p)作為函式形參,在主函式向其傳遞二維陣列的第0行第0列元素的首位址(*a)。
定義列指標:*p
初始化列指標:p=a[0],p=*a,p=&a[0][0](三種方式等價)
#include
void
findsaddlepoint
(int
*a,int m,
int n)
;void
findsaddlepoint
(int
*a,int m,
int n)
x1=x;
for(t=
0;t(x==x1)}if
(!flag)
printf
("no saddle point!");
}int
main()
}findsaddlepoint
(*a,m,n)
;//向函式傳遞二維陣列的第0行第0列的位址
//可替換為: findsaddlepoint(a[0],m,n);
//可替換為: findsaddlepoint(&a[0][0],m,n);
}
真題演練 M N矩陣轉置
題目 程式設計計算並輸出m n階矩陣的轉置矩陣。其中,m和n的值由使用者用鍵盤輸入。已知m和n的值都不超過10。解法1 用二維資料作為函式引數,實現矩陣轉置 include define m 10 define n 10 void transpose int a n int b m int m,in...
真題演練3
2018 2019 acm icpc pacific northwest regional contest div.1 b coprime integers 莫比烏斯反演 容斥 數論 莫比烏斯反演,待填坑 d count the bits 看到有隊伍20min就a了這題,自然而然地覺得這題肯定有規律...
React面試真題演練
1 元件之間如何通訊 2 jsx本質 3 context是什麼?如何應用?4 shouldcomponentupdate的用途 5 什麼是純函式?6 對於 react 的元件生命週期 7 react 發起 ajax 應該在哪個生命週期 8 渲染列表,為何使用 key 9 函式元件和 class 元件...