Input n:
5↙
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25
#include<stdio.h>
int main()
{
int i,j,a[100][100],n,k,ret;
printf("Input n:\n");
ret=scanf("%d",&n);
k=1;
if(n<100&&n>0&&ret==1)
{
for(i=0; i<n; i++)
{
for(j=0; j<=i; j++)
{ //输出上三角
if(i%2==0) a[i-j][j]=k;
else a[j][i-j]=k;
k++;
}
}
//输出下三角
for(i=n; i<2*n; i++)
{
for(j=1; j<2*n-i; j++)
{
if(i%2==0) a[n-j][i-n+j]=k; //n+1在这里是定值了
else a[i-n+j][n-j]=k;
k++;
}
}
for(i=0; i<n; i++)
{
if(i!=0)
printf("\n");
for(j=0; j<n; j++)
{
printf("%4d",a[i][j]);
}
}
printf("\n");
}
else
printf("Input error!\n");
return 0;
}
要想输出
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25 类型的只需要把两个a[][]交换即可