真題演練 矩陣的鞍點

2021-10-05 17:41:05 字數 1228 閱讀 1020

題目:

請程式設計找出乙個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 元件...