原理:(1)通过循环x,y来建立爱心方框的范围
(2)以爱心的数学函数(x*x+y*y-1)^3-x^2*y^3=0作为界限,如果(x*x+y*y-1)^3-x^2*y^3<=0则说明像素点在爱心内,就打印一个字符(例如打印“ * ”),如果是>0的话即打印空格.
1.打印爱心代码如下:
#include <stdio.h>
#include<Windows.h>
#include<math.h>
int main()
{
double x, y;
double a;
double b;
for (y = 1.5; y > -1.5; y -= 0.1) //调好的参数,爱心形状,可以自行调参数,改变爱心的形状
{
for (x = -1.5; x < 1.5; x += 0.05)
{
printf("%c", pow(x * x + y * y - 1, 3) - x * x * pow(y, 3) <= 0 ? '*' : ' ');
//打印的字符使用结果可以自己修改(这里用'*'来作为爱心的像素点)
}
puts("");
Sleep(50);//停机50毫秒,让爱心像素,一行一行输出
}
}
结果如下:
2.利用随机数以及建立随机数种子,再调用SetConsoleTextAttribute()函数,可以实现爱心代码的打印
2.彩色爱心的代码:
#include<stdio.h>
#include<Windows.h>
#include<math.h>
#include<time.h>
int main()
{
double x, y;
srand((unsigned)time(0));
for (y = 1.5; y > -1.5; y -= 0.1)
{
for (x = -1.5; x < 1.5; x += 0.05)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), rand() % 15 + 1);//设立打印字符颜色
printf("%c", pow(x * x + y * y - 1, 3) - x * x * pow(y, 3) <= 0 ? 3 : ' ');
}
puts("");
Sleep(50);
}
getchar(); //防止闪退
}
结果如下:
注释:数字3的阿斯克码对应的字符是 小爱心。
注释:Sleep(50);可以让每一行间隔50毫秒打印(计算机停机50毫秒)。