关于c语言数组的一道题 高手来

2024-12-12 08:24:15
推荐回答(3个)
回答1:

算法很简单:行+,列+,行-,列-,然后再循环就这四个算式了
这是C++
换成c语言 前三行 换成 #include
把 cin 换成 scanf cout 换成 printf
#include
#include
using namespace std;
int main()
{ int a[100][100]={0};
int i,j,n,b=0,m=1,k=2,l;
cin>>n;
l=n;
while(b {
for(i=m;i<=n;i++)
{ if(a[i][m]!=0)
break;
a[i][m]=++b;
}
for(j=k;j<=n;j++)
{if(a[l][j]!=0)
break;
a[l][j]=++b;
}
for(i=n-m;i>=m;i--)
{ if(a[i][l]!=0)
break;
a[i][l]=++b;
}
for(j=n-m;;j--)
{ if(a[m][j]!=0)
break;
a[m][j]=++b;
}
m++,k++,l--;
}
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++)
cout< cout< }
return 0;
}

回答2:

#include
int a[100][100];
main()
{
int i,j,k,x,y,n;
scanf("%d",&n);
for(x=0;xfor(y=0;yx=y=i=0;
j=1;
for(k=1;k<=n*n;k++)
{a[x][y]=k;
if(x+i<0 || y+j<0 || x+i>=n || y+j>=n || a[x+i][y+j]>0)
{if(j!=0){i=j;j=0;}
else{j=-i;i=0;}}
x=x+i;
y=y+j;}
for(y=0;yfor(x=0;xprintf("%5d",a[x][y]);
printf("\n");}
getch();
}

回答3:

#include
using namespace std;
int main()
{
int n,now=1;
cin>>n;
int a[n+1][n+1];
for(int i=1;i<=(n+1)/2;i++)
{
for(int j=i;j<=n-i+1;j++)
{a[j][i]=now;now++;}
for(int j=i+1;j<=n-i+1;j++)
{a[n-i+1][j]=now;now++;}
for(int j=n-i;j>=i;j--)
{a[j][n-i+1]=now;now++;}
for(int j=n-i;j>=i+1;j--)
{a[i][j]=now;now++;}
}
for(int i=1;i<=n;i++){cout< for(int j=1;j<=n;j++)
cout< system("pause");
return 0;
}