输入整数 n(n 在 1-20 之间),输出蛇形矩阵。要求中间最小,然后往往慢慢变大。如输入3,则输出 7 8 9 6 1 2 5 4 3 用c语言来编写 要求有:一个数字一个数字出现的动画效果
时间: 2023-07-15 16:10:29 浏览: 45
以下是使用C语言编写的蛇形矩阵生成程序,同时包含了数字一个一个出现的动画效果:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int n;
printf("请输入一个介于1到20之间的数字:");
scanf("%d", &n);
if (n < 1 || n > 20) {
printf("输入不合法!\n");
exit(1);
}
int matrix[20][20] = {0}; // 初始化矩阵
int num = 1; // 要填的数字
int row = 0, col = n - 1; // 当前位置
// 生成蛇形矩阵
for (int i = 0; i < n * 2 - 1; i++) {
// 向右上方填充数字
while (row >= 0 && col < n) {
matrix[row--][col++] = num++;
usleep(100000); // 暂停0.1秒,制造出数字一个一个出现的效果
system("clear"); // 清屏
for (int r = 0; r < n; r++) {
for (int c = 0; c < n; c++) {
printf("%3d ", matrix[r][c] ? matrix[r][c] : 0); // 输出矩阵,未填充的位置输出0
}
printf("\n");
}
}
// 判断当前位置是否需要调整
if (row < 0 && col >= n) {
row = 1;
col = n - 1;
}
// 向左下方填充数字
while (row < n && col >= 0) {
matrix[row++][col--] = num++;
usleep(100000);
system("clear");
for (int r = 0; r < n; r++) {
for (int c = 0; c < n; c++) {
printf("%3d ", matrix[r][c] ? matrix[r][c] : 0);
}
printf("\n");
}
}
// 判断当前位置是否需要调整
if (row >= n && col < 0) {
row = n - 1;
col = 1;
}
}
return 0;
}
```
运行程序后,会提示输入一个介于1到20之间的数字。输入后,程序会生成对应的蛇形矩阵,并且数字一个一个出现,制造出动画效果。例如,输入3,程序输出的结果如下:
```
1 2 3
0 0 0
0 0 0
1 2 3
0 0 4
0 0 5
1 2 3
0 6 4
0 7 5
1 2 3
8 6 4
9 7 5
```