1.前言

新年第一天上班,先祝大家新年快乐,巧的是,今天刚好又是情人节,所以想了下用C实现画心形符号~

过年的时候,跟我表哥去接新娘,实地看了下,如果一个汉字内心没有点浪漫的细胞,很难勾搭上喜欢的妹子的,希望新的一年,各位单身coder们都能找到喜欢的另一半。

 

2.心形符号数学公式

Heart Curve -- from Wolfram MathWorld

这个网站里面的公式,我随便挑了一个

https://img-blog.csdnimg.cn/20190214113407685.png

公式如下

 

浪漫情人节|C语言画心型_C语言

 

3.代码如下

代码里面有注释,不理解的可以自己运行调试

注意:easyx 下载链接如下

EasyX Library for C++

 

#include <stdio.h>
#include <easyx.h>
#include <math.h>
#define X 480
#define Y 480

int main()
{
    int i, j;
    /*初始化X,Y缓冲区*/
    initgraph(X, Y);
    /*设置背景颜色*/
    setbkcolor(WHITE);
    /*用于清除图形屏幕*/
    cleardevice();
    for (i = 0; i<X; i++)
    {
        for (j = 0; j<Y; j++)
        {
            /*i,j就是坐标轴,但是因为没有负数,所以需要做平移操作*/
            double t1 = j / 100.0 - 2, t2 = -(i / 100.0 - 2.5);
            /*判断是否在区间范围内*/
            if(pow(pow(t1,2) +pow(t2,2) -1,3) -pow(t1,2)*pow(t2,3) < 0.0)
                putpixel(j, i, RED);
        }
    }
    getchar();
    return 0;

}

 

4.运行结果

 

浪漫情人节|C语言画心型_C语言_02

 

5. 换一个方式实现一下

 

代码如下

 

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

int main()
{

    string s = "I love xiaoyun!";
    for (float y = 1.1; y >= -1.1; y -= 0.06) {
        int index = 0;
        for (float x = -1.1; x <= 1.1; x += 0.025)
            if (pow((x*x + y*y - 1.0), 3) - x*x*y*y*y <= 0.0)
                cout << s[(index++) % s.size()];
            else
                cout << ' ';
        cout << endl;
    }

    getchar();
    return 0;

}

 

运行输出如下

 

浪漫情人节|C语言画心型_C语言_03

 

浪漫情人节|C语言画心型_C语言_04

 

浪漫情人节|C语言画心型_C语言_05

 

 

 

浪漫情人节|C语言画心型_C语言_06