一种做法

#include <stdio.h>

int main(void){
    int n;
    
    scanf("%d", &n);
    
    int a[n][n];
    int i, j;
    int top = 0, bottom = n-1, left = 0, right = n-1;
    
    int k = 1;
    
    while(k <= n*n){
        //从左往右走
        for(i = left; i <= right; i++){
            a[top][i] = k;
            k++;
        }
        top++;
        
        //从上往下走
        for(i = top; i <= bottom; i++){
            a[i][right] = k; 
            k++;
        }
        right--;
        
        //从右往左走
        for(i = right; i >=left; i--){
            a[bottom][i] = k;
            k++;
        }
        bottom--;
        
        //从下往上走
        for(i = bottom; i >= top; i--){
            a[i][left] = k;
            k++;
        }
        left++;
    }
    
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            printf("%3d", a[i][j]);
        }
        printf("\n");
    }
    
}

全部评论

相关推荐

08-08 11:51
门头沟学院 Java
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务