为什么每次输出总有一个不合适

P5731 【深基5.习6】蛇形方阵

for(int k=c;k>0;k--)中k>0条件不对,应维护左边填过的列,而非每次都填到k==1;修改如下: ```cpp #include <cstdio> int main() { int m,n,num,c,q,l; int j=1; int a[10][10]; num=1; n=1; scanf("%d",&m); c=m; l=0; while(num<=(m*m)) {for(int i=n;i<=c;i++) { a[n][i]=num; num++; } n++; for(int j=n;j<=c;j++) { a[j][c]=num; num++; } q=c; c--; for(int k=c;k>l;k--) { a[q][k]=num; num++; } for(int p=c;p>=n;p--) { a[p][n-1]=num; num++; } l++; } for(int i=1;i<=m;i++) { for(int j=1;j<=m;j++) { if(a[i][j]<10) printf(" %d",a[i][j]); else printf(" %d",a[i][j]); }printf("\n"); } return 0; } ```
by Zero251 @ 2023-12-04 17:40:55


|