浪漫的表白 。刚接触编程语言 ,一个学长做的题。其实很简单,就是找规律输出,只是觉得输出特别浪漫,所以在此作为我人生第一个博客文章!!哈哈,大神之路 走起

本文介绍了一种使用C语言绘制心形图案的算法。通过递归调用MAKE函数来完成心形图案的绘制,并记录所需的蜡烛数量。该算法利用了特定的坐标移动规则来填充字符网格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <cstdio>
#include <cstring>
#include <cstdlib>
#define MAX_N 56
#define MAX_M 56
#define draw;  f[x][y]='#';  ret++;
#define move(b,a,c);for(int i=(c);i>0;i--)    {x+=(a);y+=(b);draw;}
//printf("[%d,%d]\n",x,y);
#define center 3*(n-1),3*(n-1)
char f[MAX_N][MAX_M];
void INI()
{
     memset( f, ' ', sizeof(f) );
}
int MAKE( int cx, int cy, int n )
{
    if ( n <= 1 )
    return 0;
    int ret = 0;
    int x = cx - 2*(n-1);
    int y = cy;
    move(1,-1,n-1);
    move(1,0,n-1);
    move(1,1,n-1);
    move(0,1,2*(n-1));
    move(-1,1,3*(n-1));
    move(-1,-1,3*(n-1));
    move(0,-1,2*(n-1));
    move(1,-1,n-1);
    move(1,0,n-1);
    move(1,1,n-1);
    ret += MAKE( cx, cy, n-1 );
    return ret;
}
int ENDLINE()
{
   int i, j;
   for( i=0; i<MAX_N; i++ )
    {
        for ( j=MAX_M-2; j>=0; j-- )
        {
            if ( f[i][j] != ' ' )
            {
            f[i][j+1] = '\0';
            break;
            }
        }
    if ( j < 0 )
      break;
    }
    return i;
}
int main()
{
    //freopen( "Heart.in", "r", stdin );
    //freopen( "Heart.out", "w", stdout );
    int n;
    while ( scanf( "%d", &n ) != EOF )
    {
        INI();
        printf( "He needs %d candles.\n", MAKE( center, ++n ) );
        for ( int i=0, end=ENDLINE(); i<end; i++ )
        printf( "%s\n", f[i] );
        printf( "\n" );
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值