1、蛇形矩阵输出
思路:就顺时针的矩阵为例,由矩阵外至内圈的数值是逐渐加1的,所以主要是找出值循环增加的规律,跟设定的圈数round有关,而round的取值范围为0 <= round <= n / 2,首先定义圈数从0开始,→的下标x是恒定的,从0开始,但是下标y是从round至n - round的,接着向下↓,下标y保持n - round 不变,下标x从round + 1增加到n - round - 1,;再接着向左←,下标x保持n - round - 1不变,而下标y则由n - round - 1减到round,最后向上↑,保持下标y为round不变,再将下标x由n - round - 1减少到round + 1,一个圈结束后,round加1,继续循环,最后判断一下输入的矩阵函数是奇数还是偶数,如果是奇数就不能忘了矩阵最中间的数,最后输出的数。矩阵的各个数都已经设定好了,就以依次打印出矩阵。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x; /*二维数组的第一个下标*/
int y; /*二维数组的第二个下标*/
int n; /*创建的矩阵为n*n*/
int count = 1; /*蛇形矩阵由1开始计数*/
int round; /*矩阵转的圈数*/
printf("Please input the size of the array you want to be(n * n):\n");
scanf("%d",&n);
int (*a)[n] = calloc(n * n,sizeof(int));
//如果n = 1,则直接输出
if(n == 1)
{
a[0][0] = count;
}
else
{
for(rou