打印螺旋矩阵

来源:互联网 发布:佛伊泰克 知乎 编辑:程序博客网 时间:2024/05/18 20:36

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
这里写图片描述
这里主要思路就是顺着外圈往内圈走,控制行列变量,让每次递加的数组下标符合我们要展示的螺旋图形就可以
代码实现:

int main(){    int i, j, a[100][100] = { 0 }, n, k = 1;    printf("please input a number n:");    while (scanf("%d", &n) != EOF){        k = 1;        for (i = 1; i <= n / 2; ++i){            for (j = i; j <= n - i; ++j) /* 左侧 */                a[i][j] = k++;            for (j = i; j <= n - i; ++j) /* 下方 */                a[j][n + 1 - i] = k++;            for (j = n - i + 1; j >= i + 1; j = j - 1) /* 右侧 */                a[n + 1 - i][j] = k++;            for (j = n - i + 1; j >= i + 1; j = j - 1) /* 上方 */                a[j][i] = k++;        }        if (n != 1){            for (i = 1; i <= n; ++i){                for (j = 1; j <= n; ++j)                    printf("%5d", a[i][j]); printf("\n");            }        }        else            printf("%5d\n", n);        printf("please input a number n:");    }    return 0;}
原创粉丝点击