解题思路: 认真分析,找到其中的规律,详细请看代码!
注意事项:
参考代码:
#include <stdio.h> #define N 101 int main() { int a[N][N]={1}; int i,ii,j,n,k,sum=0; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) sum=sum+i; //求出蛇形数组的最大数字 k=1; j=0;i=0; for(ii=1;k<=sum;ii++) //ii控制行数,k控制每一个数组的值 { i=ii; j=0; //恢复到第i行第0列 a[i][j]=++k; //赋值 while(1) { i--;j++; //沿着对角线往上走 if(i<0) break; //超出边界,对角线赋值结束 a[i][j]=++k; //符合标准则赋值 } } for(i=0;i<n;i++) //输出蛇形矩阵 { for(j=0;j<n-i;j++) if(j==0) printf("%d",a[i][j]); //第一列不输出空格 else printf("% d",a[i][j]); /*其他列输出前导空格,当然也可以倒过来,对角线那一列不输出后面的空格*/ printf("\n"); } } return 0; }
0.0分
1 人评分