void 输出方阵用C语言N最小值按升序放对角线()
{//缘由https://ask.csdn.net/questions/7583943?spm=1005.2025.3001.5141
int arr[20][20]{}, n = 0, x = 0, y = 0, t = 0;
scanf_s("%d", &n); t = n*n; (n % 2 ? ++t : 0);
while (x < n)arr[x][x] = arr[x][n - 1 - x] = -1, ++x;
x = 0;
while (x < n)printf("%4d", arr[x][y]), (++y>n - 1 ? cout << endl, y = 0, ++x : 0);
y = x = 0; printf("\n");
while (x < n)(arr[x][y] != -1 ? arr[x][y] = t--, ++y : ++y), (t ? 0 : t = 20), (y>n - 1 ? ++x, y = 0 : 0);
y = x = 0;
while (x < n)printf("%4d", arr[x][y]), (++y>n - 1 ? cout << endl, y = 0, ++x : 0);
y = x = 0; printf("\n");
while (x < n)arr[x][x] = t--, ++x;
x = 0;
while (x < n)arr[x][n - 1 - x] = t--, ++x;
y = x = 0;
while (x < n)printf("%4d", arr[x][y]), (++y>n - 1 ? cout << endl, y = 0, ++x : 0);
}