蛇形矩阵c++实现

1. 实验题目

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。  

【输入】  本题有多组数据,每组数据由一个正整数N组成。(N不大于100 

【输出】  对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

【输入范例】 5  

【输出范例】 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11

 

2. 需求分析

1.该程序编写与运行环境VC++6.0;

2.输入的形式和输入值的范围:输入要求的是整数,范围为[0,100]。输出要求的也是整数,并且(对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格

3.程序所能达到的功能:

1开始的自然数依次排列成的一个矩阵上三角形。

4.测试数据:

输入数据有:

5

输出是:

3  6 10 15

5  9 14

8 13      

7 12

11

3.概要设计

要实现以上程序需要定义int数据类型以及整型数组,用for循环和递归算法来实现蛇形矩阵,并且只用一个主函数来实现;

4.详细设计

1.输入数据类型与主函数内数据定义与初始化

   #define N 100

intn,i,j,k;

inta[N][N];

2. 输入语句与输出语句的实现

scanf("%d",&n);

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

3.for循环的实现

 

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

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

{

      

        k=i+j+1;

      a[i][j]=k*(k-1)/2+j+1;

 

}

 

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

 {

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

  {

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

  }

  printf("\n");

}

 5.调试分析

  

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

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

{

      

        k=i+j+1;

      a[i][j]=k*(k-1)/2+j+1;

 

}该程序段的时间复杂度为O(n^2);空间复杂度为O(n^2);

  2:for(i=0;i<n;i++)

 {

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

  {

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

  }

  printf("\n");

}该程序段的时间复杂度为O(n^2);空间复杂度为O(1);

  3:以上程序在调试时采用了单步跟踪法,可以逐步跟踪程序,首先先初始化数据,再进入1,完成1,再进入2,并输出结果;

 

6.使用说明

#include <stdio.h>

#define N 100

void main()

{

 int n,i,j,k;

 int a[N][N];

 scanf("%d",&n);

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

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

{

      

        k=i+j+1;

     a[i][j]=k*(k-1)/2+j+1;

 

}

 

2: for(i=0;i<n;i++)

 {

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

  {

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

  }

 printf("\n");

 }

}

以上程序在VC++6.0环境下编写与运行的,该程序采用c语言编程,该程序的输入输出运用的都是整型,并且用for循环和数组来实现,当输入n(n大于0)的数程序开始执行1号for循环,知道i=n结束1号for循环。然后执行2号for循环,逐一把数打印出来当i=n时结束程序;

 

 

 

 

 

7.测试结果



猜你喜欢

转载自blog.csdn.net/ccccc49813645075/article/details/80398537