C刷題記錄 矩陣相關

2021-10-24 07:16:21 字數 4791 閱讀 4533

題目1·幻方矩陣

檢驗並列印幻方矩陣

幻方矩陣是指該矩陣中每一行、每一列、每一對角線上的元素之和都是相等的。從鍵盤輸入乙個5×5的矩陣並將其存入乙個二維整型陣列中,檢驗其是否為幻方矩陣,並將其按指定格式顯示到螢幕上。

輸入格式: 「%d」

輸出格式:

如果是幻方矩陣,輸出提示資訊: 「it is a magic square!\n」

矩陣元素的輸出: 「%4d」(換行使用"\n")

如果不是幻方矩陣,輸出提示資訊: 「it is not a magic square!\n」

輸入樣例1:

17_24_1_8_15

23_5_7_14_16

4_6_13_20_22

10_12_19_21_3

11_18_25_2_9

(輸人樣例中「_」代表空格)

輸出樣例1:

it is a magic square!**

17**24

***1

***8

**15*

*23**

*5**

*7**

14**16

***4

***6

**13*

*20**

22**10

**12*

*19**

21***

3**11

**18*

*25**

*2**

*9

(輸出樣例中「*」代表空格)

輸入樣例2:

1_0_1_6_1

3_1_1_1_1

1_1_1_1_2

1_1_1_1_1

9_1_7_1_1

(輸人樣例中「_」代表空格)

輸出樣例2:

it is not a magic square!
注意:為避免出現格式錯誤,請直接拷貝貼上上面給出的輸入、輸出提示資訊和格式控制字串!

(輸人樣例中「_」代表空格,輸出樣例中「*」代表空格)

程式

#include

#include

#define n 10

void

findsaddlepoint

(int a[

][n]

,int m,

int n)

;void

findsaddlepoint

(int a[

][n]

,int m,

int n)

} min = a[0]

[y];

k =0;

l = y;

for(r =

0; r < m; r++)}

if(x == k && y == l)

}printf

("no saddle point!\n");

return;}

intmain()

findsaddlepoint

(a, m, n)

;return0;

}

題目2·鞍點

請程式設計找出乙個m*n矩陣中的鞍點,即該位置上的元素是該行上的最大值,是該列上的最小值。如果矩陣中沒有鞍點,則輸出「no saddle point!」

已知函式原型:

void findsaddlepoint(int a[n], int m, int n);

在該函式中輸出有無鞍點的資訊。

程式執行結果示例1:

input m,n:3,

3↙input matrix:12

3↙456↙

789↙a[0]

[2] is 3

程式執行結果示例2:

input m,n:3,

4↙input matrix:34

75↙01

82↙93

26↙no saddle point!

程式

#include

#include

#define n 10

void

findsaddlepoint

(int a[

][n]

,int m,

int n)

;void

findsaddlepoint

(int a[

][n]

,int m,

int n)

} min = a[0]

[y];

k =0;

l = y;

for(r =

0; r < m; r++)}

if(x == k && y == l)

}printf

("no saddle point!\n");

return;}

intmain()

findsaddlepoint

(a, m, n)

;return0;

}

題目3·矩陣轉置
the_original_matrix_is:

__1__2__3__4__5

__6__7__8__9_10

_11_12_13_14_15

_16_17_18_19_20

_21_22_23_24_25

the_changed_matrix_is:

__1__6_11_16_21

__2__7_12_17_22

__3__8_13_18_23

__4__9_14_18_24

__5_10_15_20_25

(輸出樣例中下劃線「_」代表空格)

輸入樣例2:

4↙輸出樣例2:

the original matrix is:

__1__2__3__4

__5__6__7__8

__9_10_11_12

_13_14_15_16

the changed matrix is:

__1__5__9_13

__2__6_10_14

__3__7_11_15

__4__8_12_16

程式

#include

#include

#define n 10

intmain()

printf

("\n");

}printf

("the changed matrix is:\n");

for(i=

0;i)printf

("\n");

}return0;

}

題目4·蛇形矩陣
input n:

5↙ 126

71535

814164

9131722

1012

1821

2311

1920

2425

程式執行結果示例2:

input n:

4↙ 126

7358

134912

1410

1115

16

程式執行結果示例3:

input n:-5↙

input error!

程式執行結果示例4:

input n:

105↙

input error!

程式執行結果示例5:

input n:

w↙input error!

輸入提示資訊:「input n:\n」

輸入錯誤提示資訊:「input error!\n」

輸入格式: 「%d」

輸出格式:"%4d"

資料換行: 「\n」

程式

#include

#define n 100

void

zigzagmatrix

(int a[

][n]

,int n)

;void

zigzagmatrix

(int a[

][n]

,int n)}if

(i%2==1

)}}//處理右下三角,從a[n][n]開始倒序輸出

for(i=

0;i1;i++)}

if(i%2==

1)}}

for(i=

0;i)printf

("\n");

}}intmain()

;printf

("input n:\n");

s =scanf

("%d"

,&n);if

(s <

1|| n <

0|| n >

100)

else

return0;

}

LeetCode刷題記錄一(C)

1 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 note the returned array m...

刷題記錄(C )02

牛客網刷題 劍指offer 1.題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。2.解題思路 從前序遍歷可知,前序遍歷陣列pre的首元素就是二叉樹的根結點,然後根據根結點的值...

刷題記錄09(C )

牛客網刷題 題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解題思路 這種二分查詢難就難在,arr mid 跟誰比.我們的目的是 當進行一次比較時,一定能夠...