7 6 2 1
13 8 5 3
14 12 9 4
16 15 11 10
请问各位大佬怎么才能实现上面的输出啊?
#include
int main()
{
int i,j,a[100][100],n,k;
printf("请输入列数n= ");
scanf("%d",&n);
k=1;
for(i=0; i<n-1;i++)
{
for(j=0; j<=i; j++)
{
if(i%2==0) a[i-j][j+n-1]=k;
else a[j][i+j]=k;
k++;
}
}
for(i=n-1;i<2*n-1; i++)
{
for(j=0;j<i; j++)
{
if(i%2==0) a[n-1-j][i-n+1]=k;
else a[j+i-n+1][j]=k;
k++;
}
}
for(i=0; i<n;i++)
{
printf("\n");
for(j=0; j<n;j++)
{
printf("%4d",a[i][j]);
}
}
return 0;
}
#include<stdio.h>
void fun(int a[][100],int n){
int i=0,j=n-1,k=1,N=n*n;
int flag=1;
while(k<=N){
a[i][j]=k++;
if(flag==1){
i--;
j--;
if(i<0&&j>=0){
i=0;
flag=0;
}else if(j<0){
i=i+2;
j=0;
flag=0;
}
}else{
i++;
j++;
if(j>=n&&i<n){
j=n-1;
flag=1;
}else if(i>=n){
i=n-1;
j=j-2;
flag=1;
}
}
}
}
int main(){
int a[100][100],n;
scanf("%d",&n);
fun(a,n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}