例如:
输入:4
输出:
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
我写的程序如下:
#include#include#includemain(){ int a[100][100],n,j,k,i,ix,b; /*j是行,k是列,b是循环变量,ix控制每次循环次数*/ i=1;ix=1;k=1;j=1; memset(a,0,sizeof(a));
printf("请输入一个数:"); scanf("%d",&n); while(i!=n*n) { if(k==1&&j==1) /*把1赋给左上角的数组(第一个数)*/ a[j][k]=i; i+=1;j++; if(k==1&&j!=1) /*“↗”这个方向赋值*/ { for(b=1;b<=ix;b++) a[j][k]=i; j--;k++; i+=1; } if(j==1&&k!=1)/*“↙”这个方向赋值*/ { for(b=1;b<=ix;b++) a[j][k]=i; j++;k--; i+=1; } if(j==0) /*因为前面的赋值循环是先赋值在对jk分别自加自减,所以有可能等于0*/ { j++; } else if(k==0) { k++; } if(ix=n) { ix-=1; } printf("%d\n",a[j][k]); /*测试用,可以无视*/ } for(j=1;j<=n;j++) { for(k=1;k<=n;k++) { printf("%d ",a[j][k]); /*最后输出*/ } printf("\n"); } system("pause"); }结果输入4
输出:
1 3 0 0
2 0 0 0
5 0 0 0
0 0 0 0
求解啊!
希望能在我原来的程序上修改,不要重新写另外一个程序给我,谢了!!!!
重新发吧.....
#include
#include
#include
main()
{
int a[100][100],n,j,k,i,ix,b; /*j是行,k是列,b是循环变量,ix控制每次循环次数*/
i=1;ix=1;k=1;j=1;
memset(a,0,sizeof(a));
printf("请输入一个数:");
scanf("%d",&n);
while(i!=n*n)
{
if(k==1&&j==1) /*把1赋给左上角的数组(第一个数)*/
a[j][k]=i;
i+=1;j++;
if(k==1&&j!=1) /*“↗”这个方向赋值*/
{
for(b=1;b<=ix;b++)
a[j][k]=i;
j--;k++;
i+=1;
}
if(j==1&&k!=1) /*“↙”这个方向赋值*/
{
for(b=1;b<=ix;b++)
a[j][k]=i;
j++;k--;
i+=1;
}
if(j==0) /*因为前面的赋值循环是先赋值在对jk分别自加自减,所以有可能等于0*/
{
j++;
}
else if(k==0)
{
k++;
}
if(ix
{
ix+=1;
}
else if(ix>=n)
{
ix-=1;
}
printf("%d\n",a[j][k]); /*测试用,可以无视*/
}
for(j=1;j<=n;j++)
{
for(k=1;k<=n;k++)
{
printf("%d ",a[j][k]); /*最后输出*/
}
printf("\n");
}
system("pause");
}