问题遇到的现象和发生背景 /
问题相关代码,请勿粘贴截图 /
运行结果及报错内容 /
我的解答思路和尝试过的方法 /
我想要达到的结果:17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
#include <stdio.h>
int main()
{
int a[20][20] = {0};
int i, j, n, count = 1;
scanf("%d", &n);
i = 0;
j = n;
do /*从右上方开始的半个倒三角*/
{
for(j -= 1; i>=0; i--, j--) /*下行(2 3,7 8 9 10……)*/
{
a[i][j] = count++;
}
if(j<0) break;
for(i = 0; j<n; i++, j++) /*上行(1,4 5 6……)*/
{
a[i][j] = count++;
}
}while(i>0&&j>0);
i = -1;
j = 0;
do /*接着倒三角作左下方的正三角*/
{
for(i += 2, j = 0; i<n; i++, j++) /*同理,下行*/
{
a[i][j] = count++;
}
for(i -= 1, j -= 2; j>=0; i--, j--) /*同理,上行*/
{
a[i][j] = count++;
}
}while(i != n);
for(i = 0; i<n; i++) /*输出矩阵*/
{
for(j = 0; j<n; j++)
{
printf("%d ", a[i][j]);
}
putchar('\n');
}
return 0;
}