用C++编写一个程序 编程实现自动填充n×n矩阵元素数值,填充规则为:从第一行最后一列矩阵元素开始按逆时针方向螺旋式填充数值1,2,…,n×n,其中:n从键盘输入且3≤n≤20。最后向显示器输出该矩阵所有元素。
时间: 2023-08-31 07:20:13 浏览: 112
### 回答1:
以下是使用C++实现自动填充n×n矩阵的代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入矩阵的大小n(3≤n≤20):";
cin >> n;
int matrix[20][20] = {0};
int x = 0, y = n - 1, num = 1;
// 从第一行最后一列元素开始按逆时针方向螺旋式填充数值
while (num <= n * n) {
// 向左填充
for (int i = y; i >= 0; i--) {
if (matrix[x][i] == 0) {
matrix[x][i] = num++;
}
}
// 向上填充
for (int i = x + 1; i < n; i++) {
if (matrix[i][y] == 0) {
matrix[i][y] = num++;
}
}
// 向右填充
for (int i = y - 1; i >= 0; i--) {
if (matrix[n - 1][i] == 0) {
matrix[n - 1][i] = num++;
}
}
// 向下填充
for (int i = n - 2; i >= x + 1; i--) {
if (matrix[i][0] == 0) {
matrix[i][0] = num++;
}
}
x++;
y--;
}
// 输出矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << "\t";
}
cout << endl;
}
return 0;
}
```
该程序首先从键盘输入矩阵大小n,然后创建一个n×n的矩阵并初始化为0。接下来,根据填充规则从第一行最后一列元素开始按逆时针方向螺旋式填充数值1至n×n。最后,将填充好的矩阵输出到显示器中。
### 回答2:
以下是用C语言编写的程序实现自动填充n×n矩阵元素数值的示例:
```c
#include <stdio.h>
#define MAX_SIZE 20
int main() {
int matrix[MAX_SIZE][MAX_SIZE];
int n, num = 1;
int row, col;
printf("请输入矩阵的大小n(3≤n≤20):");
scanf("%d", &n);
// 初始化矩阵
for (row = 0; row < n; row++) {
for (col = 0; col < n; col++) {
matrix[row][col] = 0;
}
}
row = 0;
col = n - 1;
// 螺旋式填充矩阵
while (num <= n * n) {
// 向上填充
while (row >= 0 && matrix[row][col] == 0) {
matrix[row--][col] = num++;
}
row++;
col--;
// 向左填充
while (col >= 0 && matrix[row][col] == 0) {
matrix[row][col--] = num++;
}
col++;
row++;
// 向下填充
while (row < n && matrix[row][col] == 0) {
matrix[row++][col] = num++;
}
row--;
col++;
// 向右填充
while (col < n && matrix[row][col] == 0) {
matrix[row][col++] = num++;
}
col--;
row--;
}
// 输出矩阵
printf("填充后的矩阵为:\n");
for (row = 0; row < n; row++) {
for (col = 0; col < n; col++) {
printf("%-3d ", matrix[row][col]);
}
printf("\n");
}
return 0;
}
```
使用该程序,您可以输入矩阵的大小n,例如输入4,即可得到填充后的4×4矩阵如下:
```
填充后的矩阵为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
希望以上解答能满足您的需求。
### 回答3:
实现这个程序可以分为以下几个步骤:
1. 从键盘输入一个正整数n,确保它满足3≤n≤20。
2. 创建一个n×n的二维数组matrix来存储矩阵。
3. 初始化计数器count为1,并设置四个边界变量top、bottom、left、right。
4. 利用循环填充矩阵元素,直到count达到n×n为止:
a. 从右到左填充最上边的元素,同时count加1,top加1。
b. 从上到下填充最右边的元素,同时count加1,right减1。
c. 从左到右填充最下边的元素,同时count加1,bottom减1。
d. 从下到上填充最左边的元素,同时count加1,left加1。
5. 完成填充后,依次输出matrix中的所有元素。
以下是该程序的示例代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入矩阵的大小n(3≤n≤20):");
scanf("%d", &n);
// 创建n×n的二维数组
int matrix[20][20];
int count = 1;
int top = 0, bottom = n - 1, left = 0, right = n - 1;
while (count <= n * n) {
// 从右到左填充最上边的元素
for (int i = right; i >= left; i--) {
matrix[top][i] = count++;
}
top++;
// 从上到下填充最右边的元素
for (int i = top; i <= bottom; i++) {
matrix[i][right] = count++;
}
right--;
// 从左到右填充最下边的元素
for (int i = right; i >= left; i--) {
matrix[bottom][i] = count++;
}
bottom--;
// 从下到上填充最左边的元素
for (int i = bottom; i >= top; i--) {
matrix[i][left] = count++;
}
left++;
}
// 输出矩阵中的所有元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%2d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
运行程序后,从键盘输入矩阵的大小n(3≤n≤20),程序将自动按照题目要求填充矩阵,并输出矩阵中的所有元素。
阅读全文