松湖轻烟雨 2022-10-18 11:09 采纳率: 71.4%
浏览 94
已结题

关于C语言打印菱形图案规律分析

关于C语言打印菱形图案规律分析

include <stdio.h>

int main()
{
int n;
scanf(" %d", &n);

int i;
int j;
for (i=1; i<=(n+1)/2; ++i)
{
    for (j=1; j<=n+1-2*i; ++j)
    {
        printf(" ");
    }
    
    for (j=1; j<=2*i-1; ++j)
    {
        printf("* ");
    }
    
    printf("\n");
}

for (i=1; i<=(n-1)/2; ++i)
{
    for (j=1; j<=2*i; ++j)
    {
        printf(" ");
    }
    
    for (j=1; j<=n-2*i; ++j)
    {
        printf("* ");
    }
    
    printf("\n");
}

 return 0;

}
这个星号和空格的规律是如何找到的, j<=n+1-2i这一步是什么意思,还有这个 j<=n-2i是怎么实现的

  • 写回答

1条回答 默认 最新

  • a5156520 2022-10-18 15:13
    关注

    星号和空格的规律是通过观察总行数n, 行数与空格数目及星号数目之间的关系找到的 ,下面是我的理解,供参考,例如,输入5,打印的图形如下:

    img

    首先,打印前面的正三星,总共3行,行数即:1,2,3 ,可以使用第一个for循环的i=1,开始到 (n+1)/2=(5+1)/2 = 3 来实现遍历打印每一行,这个公式可以通过总行数n和行数的关系推导出来。

    然后是,打印正三角的空格,第一行4个,第二行2个,第三行0个 ,与总行数即行数的关系是, n+1-2xi , 第一行:5+1-2x1=4, 第二行:5+1-2x2=2,第三行:5+1-3x2=0。

    接着是,打印星号,第一行1个,第二行3个,第三行5个,与行数的关系即2*i-1,第一行:2x1-1=1,第二行:2x2-1=3, 第三行:3x2-1= 5.

    最后,打印每一行结尾的换行符。

    下面菱形的倒三角形,寻找星号和空格的规律可以同样如此寻找,总的办法就是从前面几个具体数据推导出一般性可以用于后续打印的规律,例如:

    星号的规律,倒三角的第一行3个星号,第二行1个星号,与倒三角行数的关系是:n-2xi , 第一行:5-2x1=3,第二行:5-2x2=1.

    
    #include <stdio.h>
    //https://ask.csdn.net/questions/7811700?spm=1005.2025.3001.5141
    int main()
    {
    int n;
    scanf(" %d", &n);
    
    int i;
    int j;
    for (i=1; i<=(n+1)/2; ++i)
    {
        for (j=1; j<=n+1-2*i; ++j)
        { 
            printf(" ");
        }
        
        for (j=1; j<=2*i-1; ++j)
        {
            printf("* ");
        }
        
        printf("\n");
    }
     
    for (i=1; i<=(n-1)/2; ++i)
    {
        for (j=1; j<=2*i; ++j)
        {
            printf(" ");
        }
        
        for (j=1; j<=n-2*i; ++j)
        {
            printf("* ");
        }
        
        printf("\n");
    }
     
     return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题