肯德基门店:蛇形方阵详细分析【经典之得一看哈】 - - JavaEye技术网站

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 14:38:22

蛇形方阵详细分析【经典之得一看哈】

文章分类:C++编程

1.#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= ");

       scanf("%d",&n);

       k=1;

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++) //每一层输入 i 个元素,故j<=i.

              {

              a[i+1-j][j] = k; //在内循环,并且与j有关。

//第i层的第一个数的横坐标为i+1-j,然后随着j++而横坐标渐渐斜上输入,

                        //数组第二个下标以 j 作为基值,随着j++纵坐标向右延伸。

                     k++;

              }

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n+1-i;j++) //每一行输出 n+1-i 个元素

                            printf("%4d",a[i][j]);

              }

       printf("\n");

}

 

2 代码:与上一个程序相比只仅仅改变了:a[i+1-j][j] —> a[j][i+1-j].

 

#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= "); 

  scanf("%d",&n);

k=1;

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++)

              {

                     if(i%2==0)   a[i+1-j][j]=k;

                  else         a[j][i+1-j]=k;           

                     k++;

              }

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n+1-i;j++)

                  printf("%4d",a[i][j]);

              } 

     printf("\n"); 

 }

 

5、代码:

#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= ");

       scanf("%d",&n);

       k=1;

//输出上三角

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++)

              {

                     if(i%2==0)  a[i+1-j][j]=k;

                  else        a[j][i+1-j]=k;          

                     k++;

              }

//输出下三角

     for(i=n+1;i<2*n;i++)

               for(j=1;j<=2*n-i;j++)

          {

                     if(i%2==0)  a[n+1-j][i-n+j]=k;   //n+1在这里是定值了

                  else        a[i-n+j][n+1-j]=k;       

                     k++;

              }

 

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n;j++)

                            printf("%4d",a[i][j]);

              }

       printf("\n");

}

 

 

6、代码:只是把上面5代码中两个地方交换位置

#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= ");

       scanf("%d",&n);

       k=1;

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++)

              {

                     if(i%2==0)  a[j][i+1-j]=k;

                  else        a[i+1-j][j]=k;         

                     k++;

              }

     for(i=n+1;i<2*n;i++)

               for(j=1;j<=2*n-i;j++)

          {

                     if(i%2==0)   a[i-n+j][n+1-j]=k;

                  else         a[n+1-j][i-n+j]=k;      

                     k++;

              }

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n;j++)

                     printf("%4d",a[i][j]);

              }

       printf("\n");

}

 

 

 

 

 

 

 

 

 

 

 

#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= ");

       scanf("%d",&n);

       k=1;

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++)          

{

                     a[j][i+1-j]=k;        

       k++;

              }

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n+1-i;j++) //每一行输出 n+1-i 个元素

                            printf("%4d",a[i][j]);

              }

       printf("\n");

}

 

3、代码:与上一个相比加了一个奇偶数层的if判断,这正好就是“拐点”的关键!

#include

void main()

{

       int i,j,a[100][100],n,k;

       printf("请输入列数n= ");

       scanf("%d",&n);

       k=1;

       for(i=1;i<=n;i++)

              for(j=1;j<=i;j++)

              {

                     if(i%2==0)  a[j][i+1-j]=k;

                  else        a[i+1-j][j]=k;          

                     k++;

              }

              for(i=1;i<=n;i++)

              {

                     printf("\n");

                     for(j=1;j<=n+1-i;j++)

                            printf("%4d",a[i][j]);

              }

       printf("\n");

}