蛇形数组:

上面的数组就叫做蛇形数组。

如何打印蛇形数组:一定不要一行一行的考虑,不然就陷入误区了。

#include<stdio.h>#include<stdlib.h>#defineline10voidinitsarr(intarr[line][line]){inti1=0;intj1=0;intm1=line-1;intn1=line-1;intk=0;inti2;intj2;intm2;intn2;while(i1<=m1&&j1<=n1){for(j2=j1;j2<=n1;j2++)//从第一行开始打印行{k++;arr[i1][j2]=k;}for(i2=i1+1;i2<=m1;i2++)//从最后一列开始打印列{k++;arr[i2][n1]=k;}for(n2=n1-1;n2>=j1;n2--)//从最后一行开始打印行{k++;arr[m1][n2]=k;}for(m2=m1-1;m2>i1;m2--)//从第一列开始打印列{k++;arr[m2][j1]=k;}j1++;//准备下一圈的打印i1++;n1--;m1--;}}voidoutput(intarr[line][line]){inti;intj;for(i=0;i<line;i++){for(j=0;j<line;j++){printf("%5d",arr[i][j]);}printf("\n\n");}}intmain(){intarr[line][line];initsarr(arr);output(arr);system("pause");return0;}



“之”字形打印:

上面这幅图就是“之”字形打印出来的。


如何打印“之”字形:


#include<stdio.h>#include<stdlib.h>#defineline10voidoutput(intarr[line][line]){inti;intj;for(i=0;i<line;i++){for(j=0;j<line;j++){printf("%5d",arr[i][j]);}printf("\n\n");}}voidinitsarr(intarr[line][line]){inti=0;intj=0;intk=0;inti2;intj2;for(i=0,j=0;i<line&&j<line;i++,j++){if(i%2==0)//上三角形从左下到右上斜线的打印{for(i2=i,j2=0;i2>=0&&j2<=j;i2--,j2++){k++;arr[i2][j2]=k;}}else//上三角形从右上到左下斜线的打印{for(j2=j,i2=0;j2>=0&&i2<=i;j2--,i2++){k++;arr[i2][j2]=k;}}}for(i=line-1,j=line-1;i>=0&&j>=0;i--,j--){if(i%2!=0){//下三角形从左下到右上斜线的打印for(i2=line-1,j2=line-j;i2<line&&j2<line;i2--,j2++){k++;arr[i2][j2]=k;}}else{//下三角形从右上到左下斜线的打印for(i2=line-1,j2=line-j;i2<line&&j2<line;i2--,j2++){k++;arr[j2][i2]=k;}}}}intmain(){intarr[line][line];intput(arr);output(arr);system("pause");return0;}