C语言打印爱心

1、代码如下:

void print_heart(int size)

{

// 根据大小调整坐标范围

double scale = size / 10.0;

double x_min = -1.5 * scale;

double x_max = 1.5 * scale;

double y_min = -1.5 * scale;

double y_max = 1.5 * scale;

// 设置步长(控制细节)

double step = 0.05 / scale;

for (double y = y_max; y > y_min; y -= step)

{

// x步长减半以补偿字符宽高比

for (double x = x_min; x < x_max; x += step/2)

{

// 心形方程: (x² + y² - 1)³ - x²y³ = 0

double a = x*x + y*y - 1;

if (a*a*a - x*x*y*y*y <= 0)

{

//printf("*");

printf("\033[1;31m*\033[0m");

}

else

{

printf(" ");

}

}

printf("\n");

}

}

int main()

{

int size;

printf("请输入爱心大小 (1-20): ");

scanf("%d", &size);

// 限制大小范围

if (size < 1) size = 1;

if (size > 20) size = 20;

print_heart(size);

return 0;

}

2、运行结果如下:

相关推荐
三品吉他手会点灯1 天前
C语言学习笔记 - 50.流程控制4 - 流程控制为什么非常非常重要
c语言·开发语言·笔记·学习
JAVA面经实录9171 天前
Java 数据结构与算法 (终极完整学习文档)
java·数据结构·算法
在放️1 天前
Python 爬虫 · 第三方代理接入与合规使用
开发语言·爬虫·python
KANGBboy1 天前
java知识五(继承)
java·开发语言
c++之路1 天前
Bazel C++ 构建系列文档(三):构建第一个 C++ 项目
开发语言·c++
AI人工智能+电脑小能手1 天前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
开源Z1 天前
LeetCode 42 · 接雨水:从暴力到双指针的三步优化
算法·leetcode
旖-旎1 天前
《LeetCode 695 岛屿的最大面积 FloodFill DFS 解法》
c++·算法·力扣·深度优先遍历·floodfill
syagain_zsx1 天前
STL 之 vector 讲练结合
c++·算法
十月的皮皮1 天前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习