当前位置:   article > 正文

zzulioj1077空心菱形

zzulioj1077

分享一下1077空心菱形的做法 困了我一天左右(躺尸

题目要求 

 代码部分

#include <stdio.h>
#include <math.h>
int main()
{
    int hang,lie; int n;
    int i;
    scanf("%d",&n);
    i=n-2;
    for (hang=1;hang<=n;hang++)
    {
        for (lie=1;lie<=2*n-1;lie++)
        {
            if (hang<=n&&lie==n-(hang-1)||lie==n+(hang-1))
            {
                printf("*");
            }
            else printf(" ");
        }
        printf("\n");
    }
    for (hang=n+1;hang<=2*n-1;hang++)
    {
        for (lie=1;lie<=2*n-1;lie++)
        {
            if (hang>n&&lie==n-i||lie==n+i)
            {
                printf("*");
            }
            else printf(" ");
        }
        printf("\n");
        i--;
    }

    
}

第一个二重循环表示上半部分 第二个二重循环表示下半部分

思路比较简单,假设要一个n边的菱形 那么通过观察可以知道 一共有2n-1行和2n-1列。

难点就是在什么位置表示*

两重for循环表示的是依次循环每一个格子(假设菱形在一个2n-1*2n-1的正方形内)

到固定位置便会显示*,那么else对应的其他位置就是空格。

上半部分很好表示 在第一行只有 第n列有*

二行 n+1和n-1;

三行n+2和n-2;

依次根据hang的值来进行递归检测,到对应的列输入*就可以

当一列循环完后则回车键换行进行下一列。

关键是后面的n+1行以及往后

可以发现*的位置不是那么容易再用N和lie和hang的关系表示

那么就需要找规律了

这个规律我是不能太说明清楚的。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/884287
推荐阅读
相关标签
  

闽ICP备14008679号