开发者社区 问答 正文

输出一个和螺旋数组如下

输出一个和螺旋数组如下:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
这是我的源码:

#include<stdio.h>

void main(){
    int a[100][100]={0};
    int n,i,j,k = 0;
    scanf("%d",&n);
    for(i = 1;i<=n/2;i++){
        for(j = i;j<=n-i;j++)
            a[j][i] = k++;
        for(j = i;j<=n-i;j++)
            a[n-i+1][j] = k++;
        for(j = n-i+1;j>=i+1;j--)
            a[j][n-i+1]=k++;
        for(j = n+i-1;j>=i+1;j--)
            a[i][j] = k++;
    }

    for(i=1;i<=n;i++){
        for(j = 1 ;j<=n;j++ )
            printf("%d ",a[i][j]);
        printf("\n");
    }
}

screenshot

展开
收起
a123456678 2016-03-23 15:40:28 1907 分享 版权
1 条回答
写回答
取消 提交回答
  •  #include<stdio.h>
    void main(){
        int a[100][100]={0};
        int n,i,j,k = 0;
        scanf("%d",&n);
        for(i = 1;i<=n/2;i++){
            for(j = i;j<=n-i;j++)
                a[j][i] = k++;
            for(j = i;j<=n-i;j++)
                a[n-i+1][j] = k++;
            for(j = n-i+1;j>=i+1;j--)
                a[j][n-i+1]=k++;
            for(j = n-i+1;j>=i+1;j--)//修改为 j=n-i+1
                a[i][j] = k++;
        }
    
        for(i=1;i<=n;i++){
            for(j = 1 ;j<=n;j++ )
                printf("%2d ",a[i][j]); //修改为 %2d
            printf("\n");
        }
    }
    
    2019-07-17 19:11:21
    赞同 展开评论
问答分类:
问答地址: