愿你开心点头答应! 2022-11-18 23:53 采纳率: 100%
浏览 1
已结题

用“*”打印图案,实在搞不懂

img

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/613096687866150.jpg "#left")
真的不知道怎么搞的,请帮忙看看呗

  • 写回答

2条回答 默认 最新

  • 滴水不穿石 2022-11-19 19:58
    关注

    //由于字符等宽度与高度不是相等的,长宽字符一样多是画不出正方形的。下面仅供参考。谢谢!

    //提供思路,细节自己修改

    img

    #include <stdio.h>
    void draw(int n)
    {
        if(n<=16 || n>512)return;
        int m=n;
        int arr[m][n];
        int i,j;
        //初始化
        for(i=0;i<m;i++)
        {
            for(j = 0;j <n;j++)
            {
                arr[i][j]=0;
            }
        }
        //标记位置
        for(i=0;i<m;i++)
        {
            for(j = 0;j <n;j++)
            {
                if(i==0 || j==0 || i==m-1 || j==n-1)
                {
                    arr[i][j]=1;
                    printf("*");
                }
                else if(i<=m/2 && j<=n/2 && i+j==n/2 ||  (j>=n/4&&j<=n/2 && i==m/4) ||(i>=m/4&&i<=m/2&&j==n/4))
                {
                    //作出1/4然后根据对称关系翻转即可画出剩余3/4图形
                    arr[i][j]=1;
                    arr[m-i-1][j]=1;
                    arr[i][n-j-1]=1;
                    arr[m-i-1][n-j-1]=1;
                    printf("*");
                }
                else if(i+j==n*3/4&&i>m/4 && i<m/2 &&j>n/4 && j<n/2)
                {
                    arr[i][j]=1;
                    arr[m-i-1][j]=1;
                    arr[i][n-j-1]=1;
                    arr[m-i-1][n-j-1]=1;
                    printf("*");
                }
                else
                printf(" ");
            }
            printf("\n");
        }
        //输出
        for(i=0;i<m;i++)
        {
            for(j = 0;j <n;j++)
            {
                if(arr[i][j]==1)printf("*");
                else
                printf(" ");
            }
            puts("");
        }
        puts("");
    }
    int main(int argc, char** argv){
        draw(28);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 关于#单片机#的问题:Lora通讯模块hc-14电路图求内部原理图
  • ¥50 esp32 wroom 32e 芯片解锁
  • ¥15 bywave配置文件写入失败
  • ¥20 基于Simulink的ZPW2000轨道电路仿真
  • ¥15 pycharm找不到在环境装好的opencv-python
  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥15 Mabatis查询数据