方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
例如:当n=3时,输出:
1 2 3
6 4
5
当n=4时,输出:
1 2 3 4
9 10 5
8 6
7
当n=5时,输出:
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
程序运行时,要求用户输入整数n(3~20)
程序输出:方阵的上三角部分。
要求格式:每个数据宽度为4,右对齐。
#include
#include
int a[30][30];
int main()
{
int i,j,n,sum,num,k,m,x,pop;
while(~scanf("%d",&n))
{
sum=0;k=1;m=0;num=n,pop=1;
while(sum {
i=m;
if(k==1)
x=num;
else
x=num-pop++;
for(j=m;j {
if(sum==n*n-((n*n)/2)+n/2)
break;
a[i][j]=k++;
sum++;
}
j=x-2;
for(i=m+1;i {
if(sum==n*n-((n*n)/2)+n/2)
break;
a[i][j--]=k++;sum++;
}
j=m;
for(i=x-2;i>=m+1;i--)
{
if(sum==n*n-((n*n)/2)+n/2)
break;
a[i][j]=k++;sum++;
}
m++;num--;
}
m=n;
for(i=0;i {
for(j=0;j {
printf("%4d",a[i][j]);
}
m--;
puts("");
}
}
return 0;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net