C語言——填充矩陣
- 一、問題描述
- 二、格式要求
- 1.輸入形式
- 2.輸出形式
- 3.樣例
- 三、實驗代碼
一、問題描述
編程實現自動填充n×n矩陣元素數值,填充規則為:從第一行最后一列矩陣元素開始按逆時針方向螺旋式填充數值1,2,…,n×n,其中:n從鍵盤輸入且3≤n≤20。最后向顯示器輸出該矩陣所有元素。
二、格式要求
1.輸入形式
輸入一個正整數,為矩陣的行數和列數。
2.輸出形式
按行列順序輸出n×n矩陣的所有元素。
(1)每行n列矩陣元素均需在一行內輸出顯示
(2)輸出每行矩陣元素后均需換行輸出下一行,共輸出n行
(3)每個矩陣元素數值的域寬均為4位且右對齊
3.樣例
輸入:
11
輸出:
11 10 9 8 7 6 5 4 3 2 1
12 49 48 47 46 45 44 43 42 41 40
13 50 79 78 77 76 75 74 73 72 39
14 51 80 101 100 99 98 97 96 71 38
15 52 81 102 115 114 113 112 95 70 37
16 53 82 103 116 121 120 111 94 69 36
17 54 83 104 117 118 119 110 93 68 35
18 55 84 105 106 107 108 109 92 67 34
19 56 85 86 87 88 89 90 91 66 33
20 57 58 59 60 61 62 63 64 65 32
21 22 23 24 25 26 27 28 29 30 31
三、實驗代碼
#include <stdio.h>
int main() {int num, i;int k = 0, j = 0;int arr[20][20];scanf("%d", &num);int tempnum = num - 1;int numarr[2 * num];numarr[1] = num;for (i = 2; i < 2 * num - 1; i = i + 2) {numarr[i] = tempnum;numarr[i + 1] = tempnum;tempnum--;}int direction[4][2] = { {0, -1}, {1, 0}, {0, 1}, {-1, 0} };int x = 0;int y = num;int numIndex = 1;if (num >= 3 && num <= 20) {for (i = 1; i <= num * num; i++) {x = direction[j % 4][0] + x;y = direction[j % 4][1] + y;arr[x][y] = i;k++;if (k == numarr[numIndex]) {numIndex++;k = 0;j++;}}for (i = 0; i < num; i++) {for (j = 0; j < num; j++) {printf("%4d", arr[i][j]);}printf("\n");}} else {printf("Please input number between 3 to 20\n");}
}
運行結果
點贊關注,感謝您的支持 ^ _ ^
如有錯誤,還請您批評指正🤝 🤝 🤝