小明为某机构设计了一个十字型的徽标(并非红十字会)题目

写这道题的时候由于给出的输出样例的行和列不等比,所以没有看出来,开始想的是一圈一圈来打印,并没有想到把图像查分成几部分来打印,所以就一直卡在那里,但是对于这种距离问题,经常算错尤其是右和下这两个区域,最终根据图像一直更正得到了最终答案。其实这个就是一个找规律然后for循环打印没什么难度,但是对于我这个新老人还是困住了我一会。

代码如下图所示

#include<cstdio>
#include<iostream>
using namespace std;
char a[150][150];
void rprint(int n)
{
    int len=4*n+5;
    for(int i=1;i<=len;i++)
        for(int j=1;j<=len;j++)
            a[i][j]='.';
    for(int i=len/2-1;i<=len/2+3;i++)
        a[i][len/2+1]=a[len/2+1][i]='$';
    //中间十字定位
    for(int i=1;i<=n;i++)
    {
        int des1=i*2+1;
        a[des1][des1]=a[des1-1][des1]=a[des1][des1-1]='$';
        int des2=len-i*2;
        a[des1][des2]=a[des1][des2+1]=a[des1-1][des2]='$';
        a[des2][des1]=a[des2+1][des1]=a[des2][des1-1]='$';
        a[des2][des2]=a[des2+1][des2]=a[des2][des2+1]='$';
    }//打印每一圈的四个相对不规则的三角形的区域
    for(int i=1;i<=n;i++)
    {
        int des=i*2+1;
        for(int j=des;j<=len-i*2;j++)
        {
            a[i*2-1][j]='$';
            a[j][i*2-1]='$';
            a[len-i*2+2][j]='$';
            a[j][len-i*2+2]='$';
        }
    }//打印规则的边的区域
    for(int i=1;i<=len;i++)
    {
        for(int j=1;j<=len;j++)
            cout<<a[i][j];
        cout<<endl;
    }
        
}
int main()
{
    int n;
    cin>>n;
    rprint(n);
    return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值