根据参数n打印具有下面规律的图形

编写算法:根据参数n打印具有下面规律的图形,当n=4时,图形如下:

在这里插入图片描述

问题分析

思路一:

在这里插入图片描述

  1. 容易发现图形中数据排列的规律
  2. 从1—最大数,通过循环,直接输出 printf是按照从左至右、从上至下的顺序;
    若想直接输出,只有找出公式,循环计算得到
    序列:1-\n-5-2-\n-8-6-3-\n-10-9-7-4. (\n表换行)

思路二:

  1. 先用一个数组按此顺序存储数据,再正常输出;

  2. 为数组赋值,也要用循环 用斜行、列描述循环方向。 斜行i取值(1~n) 列j取值(1~n+1-i)

    斜[1,1]—a[1,1] 斜[1,2]—a[2,2] 斜[1,3]—a[3,3] 斜[1,4]—a[4,4]

    斜[2,1]—a[2,1] 斜[2,2]—a[3,2] 斜[2,3]—a[4,3]

    斜[3,1]—a[3,1] 斜[3,2]—a[4,2]

    斜[4,1]—a[4,1]

  3. 列号相同; 斜行a[i,j]->正常a[r,c] c=j,r=j+i-1 行号(显然行号与列号有关) i to n

  • [ ]第1斜行,对应行号1—n,行号与列号j同;
  • 第2斜行,对应行号2—n,行号比列号j大1;
  • 第3斜行,对应行号3—n,行号比列号j大2;

伪代码描述

main( )
{
    int i,j,a[100][100],n,k;
    input(n);
    k=1;
    for(i=1;i<=n;i=i+1)
        for( j=1;j<=n+1-i;j=j+1){
             a[i-1+j][j]=k;
             k=k+1;
        }
    for(i=1;i<=n;i=i+1){
        print( “换行符”); 
        for( j=1;j<=i;j=j+1)
             print(a[i][j]); 
    }
发布了28 篇原创文章 · 获赞 13 · 访问量 462

猜你喜欢

转载自blog.csdn.net/yo_u_niverse/article/details/105340644