lwjppz 2018-11-20 05:36 采纳率: 0%
浏览 428
已采纳

求助,这题要这么做啊?

图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-20 05:43
    关注
    #include "stdio.h"
    #include "stdlib.h"
    
    int main()
    {
        int x = 0; 
        int y = 0;
        int dir = 0;
        int n;
        scanf("%d", &n);
        int * arr = (int *)malloc(sizeof(int) * n * n);
        arr[0] = 0;
        for (int i = 1; i < n * n; i++)
        {
            if (x == 0 && y == 0)
            {
                y = 1; dir = 1;
            }
            else if (y == 0 && dir == 1)
            {
                if (x < n - 1)
                    x = x + 1;
                else
                    y = y + 1;
                dir = 2;
            }
            else if (x == 0 && dir == 2)
            {
                if (y < n - 1)
                    y = y + 1;
                else
                    x = x + 1;
                dir = 1;
            }
            else if (x == n - 1 && dir == 1)
            {
                y = y + 1;
                dir = 2;
            }
            else if (y == n - 1 && dir == 2)
            {
                x = x + 1;
                dir = 1;
            }
            else if (dir == 1)
            {
                x = x + 1;
                y = y - 1;
            }
            else if (dir == 2)
            {
                x = x - 1;
                y = y + 1;
            }
            arr[x * n + y] = i;
        }
        for (int i = 0; i < n * n; i++)
        {
            printf("%d\t", arr[i]);
            if (i % n == n - 1) printf("\n");
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?