`
qinweiping
  • 浏览: 131430 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

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

J# 
阅读更多

1.#include<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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");

}

 

 

 

4、代码:与上一相比只是交换了一下位置。

0
0
分享到:
评论

相关推荐

    蛇形方阵_C语言_C语言蛇形输出_蛇形方阵_

    蛇形方阵是一种有趣的矩阵打印方式,特别是在编程学习中经常被用作练习题目。在C语言中实现蛇形方阵,需要对数组操作和循环控制有深入的理解。下面我们将详细探讨这个主题。 首先,让我们定义蛇形方阵:它是一个二...

    信息奥赛课课通(C++)p179-例3蛇形方阵

    和教材上不一样的写法,自己写的蛇形方阵的代码。谢谢!

    信息奥赛课课通(C++)p181-3蛇形方阵2

    问题描述: 输入一个正整数n,生成一个nxn的蛇形方阵(具体见样例)。 输入格式: 一行一个正整数n,1。 输出格式: 共n行,每行n个正整数,每个正整数占5列。

    信息奥赛课课通(C++)蛇形方阵2.txt

    信息奥赛课课通(C++)蛇形方阵2.txt

    java 程序 蛇形方阵

    二维数组中,数字从左上角已s形输出。 原则上,斜线上下标的数值和相等。 基本如此,很简单的程序

    c语言编写n阶蛇形方阵

    本篇文章将深入探讨如何使用C语言来生成一个n阶的蛇形方阵,即元素按蛇形路径排列的正方形矩阵,并对代码进行详细的解析。 #### 蛇形方阵的概念 蛇形方阵是指一个n×n的矩阵,其中的元素按照蛇形路径依次填充,即...

    信息奥赛课课通(C++)蛇形方阵.txt

    信息奥赛课课通(C++)蛇形方阵.txt

    蛇形矩阵c++程序(数值排列)

    蛇形矩阵,也被称为“螺旋矩阵”,是一种特殊的二维数组,其元素按照螺旋形状填充。在C++编程中,实现蛇形矩阵通常涉及到数组操作、循环控制以及条件判断。以下是对这个话题的详细解释: 首先,我们需要理解蛇形...

    c++蛇形矩阵

    以前用c++写的一个蛇形矩阵

    蛇形矩阵递归算法

    蛇形矩阵递归算法,通过简单地递归实现蛇形矩阵的输出

    蛇形方阵 输出一个 n 阶方阵,其元素排列方式为:从左上角开始按列顺序呈现出蛇形

    输入描述 每行一个正整数 n (n ),表示 n 阶方阵。 输出描述 按列序排列的蛇形矩阵,每个方阵之间空一行。每个矩阵元素间一个空格,包含最后一个元素之后。

    蛇形矩阵(Java实现代码)

    因此输出的形状,像条蛇,因此称为蛇形矩阵.

    蛇形机器人专利分析.pdf

    从全球范围看,蛇形机器人专利申请始于上世纪70年代,经过一段时间的平稳发展后,在2005年后申请量大幅上升,这与蛇形机器人在机器人救援等领域的广泛应用和研究热点的形成是分不开的。在国内,蛇形机器人研究起步较...

    C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵

    C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之蛇形矩阵C++之...

    动态蛇形卷积(Dynamic Snake Convolution)

    【动态蛇形卷积(Dynamic Snake Convolution)】是一种创新的深度学习方法,专为拓扑管状结构的分割设计,如血管和道路等。在医学影像分析、交通监控、地图绘制等领域,这类结构的精确分割对于后续任务的准确性和效率...

    三连杆轮式蛇形机器人设计及运动分析.pdf

    "三连杆轮式蛇形机器人设计及运动分析" 本文主要介绍了一种新型的三连杆轮式蛇形机器人设计及其运动分析。该机器人由多个被动关节连接的串联连杆组成,每个连杆的中心都有一个主动全向轮。全向轮的驱动力只作用于...

    一种欠驱动蛇形臂机器人运动学分析方法.pdf

    本文主要介绍了一种欠驱动蛇形臂机器人的运动学分析方法。该机器人具有10个自由度,通过线驱动的方式控制关节的旋转和弯曲。总共15个电机驱动,每个关节绳组之间的错位角为24度。为了保证小关节之间的力传递,设计了...

Global site tag (gtag.js) - Google Analytics