用c语言运行输入整数n(n在1-20之间),输出蛇形矩阵。要求中间最小,然后往往慢慢变大。如输入3,则输出 7 8 9 6 1 2 5 4 3 要求有一个数字一个数字出现的动画效果
时间: 2023-06-17 13:06:22 浏览: 69
以下是一个使用C语言实现的蛇形矩阵输出程序,包含数字一个一个出现的动画效果。建议在本地编译运行。
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define MAX_SIZE 20
int matrix[MAX_SIZE][MAX_SIZE];
// 生成随机数,并保证不重复
int generateRandom(int* arr, int count) {
int randNum = rand() % count + 1;
for (int i = 0; i < count; i++) {
if (arr[i] == randNum) {
return generateRandom(arr, count);
}
}
return randNum;
}
// 在控制台上输出矩阵
void printMatrix(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%2d ", matrix[i][j]);
}
printf("\n");
}
}
// 在控制台上输出动画效果
void printWithAnimation(int n) {
int count = n * n;
int* arr = (int*)malloc(count * sizeof(int));
for (int i = 0; i < count; i++) {
arr[i] = i + 1;
}
srand((unsigned)time(NULL));
int index = 0;
while (index < count) {
int randNum = generateRandom(arr, count - index);
int row = (index / n) % 2 == 0 ? index / n : n - 1 - index / n;
int col = (index / n) % 2 == 0 ? index % n : n - 1 - index % n;
matrix[row][col] = randNum;
printMatrix(n);
Sleep(100);
system("cls");
index++;
}
free(arr);
}
int main() {
int n;
printf("请输入一个1-20之间的整数:");
scanf("%d", &n);
if (n < 1 || n > 20) {
printf("输入错误!\n");
return 0;
}
printWithAnimation(n);
return 0;
}
```
阅读全文