经历了栈溢出,各种数组越界,算作用不小了吧,这是最平常的想法(自己思考的),继续看看大佬的做法来充实一下,比如先输出上三角,再输出下三角,笨比没想到只好用昨天摸索的flag转向来做了

#define _CRT_SECURE_NO_WARNINGS #include <malloc.h> #include<stdio.h>

int main() { int flag = 1; //方向 int n; //输入 int count = 2; //计数器 int sup = 1; scanf("%d", &n); int arr[1001][1001] = { 0 }; arr[1][1] = 1; int i = 1, j = 2; int p, q; while (count <= n * n) { if (count <= n * n /2) { if (flag == 1) { while (j >= 1) arr[i++][j--] = count++; j++; flag = 2; } else { while (i >= 1) arr[i--][j++] = count++; i++; flag = 1; } } if(count > n * n / 2) { if (flag == 1) {
if (j!= n) { j = n; i = sup+1; } while (j > sup) arr[i++][j--] = count++; j++; i--; j++;

            flag = 2;
        }
        else
        {   
            if (i != n)
            {
                i = n;
                j = sup+1;
            }
            while (i > sup)
                arr[i--][j++] = count++;
            i++;
            i++;
            j--;
            flag = 1;
        }
        sup++;
    }
}
for (p = 1; p <= n;p++)
{
    for (q = 1; q <= n; q++)
    {
        printf("%d ", arr[p][q]);
    }
    printf("\n");
}
return 0;

}