1.题目
例如:
2.程序代码
void print_arr(int arr2[N][N])//打印数组
{
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%2d ", arr2[i][j]);
}
printf("\n");
}
Sleep(200);//sleep函数,使程序暂停200毫秒
system("cls");//cls,清除屏幕中打印出来的内容
}
void order_print(int arr[N][N], int circle)//按顺序打印
{
int i, j, k;
int arr2[N][N] = {0};//再定义一个数组,存放arr的值,每存放一个值,
//输出一次arr2,
for (i = 0, j = 0, k = 0; k < circle; k++)
{
while (i < N - k)
{
arr2[j][i] = arr[j][i];
print_arr(arr2);
i++;
}
i--;
j++;
while (j < N - k)
{
arr2[j][i] = arr[j][i];
print_arr(arr2);
j++;
}
j--;
i--;
while (i >= k)
{
arr2[j][i] = arr[j][i];
print_arr(arr2);
i--;
}
i++;
j--;
while (j > k)
{
arr2[j][i] = arr[j][i];
print_arr(arr2);
j--;
}
j++;
i++;
}
}
void init_arr(int arr[N][N], int circle)//给数组赋值
{
int i, j, k;
int num = 1;
for (i = 0, j = 0, k = 0; k < circle; k++)//每圈循环一次
{
while (i < N - k)//把每圈分为4部分,每部分单独循环
{
arr[j][i] = num++;
i++;
}
i--;
j++;
while (j < N - k)
{
arr[j][i] = num++;
j++;
}
j--;
i--;
while (i >= k)
{
arr[j][i] = num++;
i--;
}
i++;
j--;
while (j > k)
{
arr[j][i] = num++;
j--;
}
j++;
i++;
}
}
int main()
{
int arr[N][N] = { 0 };
int circle = (N + 1) / 2;//circle为圈数
init_arr(arr, circle);
order_print(arr, circle);
system("pause");
return 0;
}