【C语言】用C语言输出“心形”图案
在你们的世界里,是不是觉得程序猿一点浪漫都不懂?其实不是的,程序猿的世界也是很浪漫滴!
傻瓜版
int main()
{
printf("❤");
return ;
}

高级版
//版本一:单个字符的心形图案
#include <stdio.h> int main(void)
{
float a,x,y;
for(y=1.5f; y>-1.5f; y-=0.1f)
{
for(x=-1.5f; x<1.5f; x+=0.05f)
{
a = x*x+y*y-;
//这里的@符号即为打印出的心形图案符号,可更改
char ch = a*a*a-x*x*y*y*y<=0.0f?'@':' ';
putchar(ch);
//或者putchar(a*a*a-x*x*y*y*y<=0.0f?'*':' ');
}
printf("\n");
} return ;
}

//空心版
#include <stdio.h>
#include <math.h> // The first heart shape in hollow
// (x^2+y^2-1)^3 - x^2*y^3 = 0
// y ~ (-1.1 , 1.3 )
// x ~ (-1.2 , 1.2 )
int main() { for (float y = 1.3; y >= -1.1; y -= 0.06)
{
for (float x = -1.2; x <= 1.2; x += 0.025)
{
if (pow((x * x + y * y - 1.0), ) - x * x * y * y * y <= 0.0)
printf(" ");
else
printf("*");
}
printf("\n");
} return ;
}

//版本二:可用多个字符组成打印
#include <stdio.h> int main(void)
{
float f, x, y, z;
for (y = 1.5f; y > -1.5f; y -= 0.1f)
{
for (x = -1.5f; x < 1.5f; x += 0.05f)
{
z = x * x + y * y - ;
f = z * z * z - x * x * y * y * y;
putchar(f <= 0.0f ? "lihuan"[(int)(f * -8.0f)] : ' ');
//这里的lihuan字符可更改成符号或其他字母,汉字不行,图案会变形
}
printf("\n");
} return ;
}

//加颜色版
#include <stdio.h> int main(int argc, char* argv[])
{
float f, x, y, z;
for (y = 1.5f; y > -1.5f; y -= 0.1f)
{
for (x = -1.5f; x < 1.5f; x += 0.05f)
{
z = x * x + y * y - ;
f = z * z * z - x * x * y * y * y; // ===================================
printf("\033[47m");
char buf[] = { "lihuan" };
//这里的“lihuan”可以改为其他字符,注意,中文不行哦!
if (f <= 0.0f)
{
printf("\033[1;31m%c\033[0m", buf[(int)(f * -8.0f)]);
}
else
{
printf("%c", ' ');
}
printf("\033[0m");
// =====================================
}
printf("\n");
} return ;
}

加强版:
#include <stdio.h>
#include <math.h> float f(float x, float y, float z)
{
float a = x*x + 9.0f/4.0f*y*y + z*z - ;
return a*a*a - x*x*z*z*z - 9.0f/80.0f*y*y*z*z*z;
} float h(float x, float z)
{
for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
{
if (f(x, y, z) <= 0.0f)
return y;
}
return 0.0f;
} int main(int argc, char *argv[])
{
for (float z = 1.5f; z > -1.5f; z -= 0.05f)
{
for (float x = -1.5f; x < 1.5f; x += 0.025f)
{
float v = f(x, 0.0f, z);
if (v <= 0.0f)
{
float y0 = h(x, z);
float ny = 0.01f;
float nx = h(x + ny, z) - y0;
float nz = h(x, z + ny) - y0;
float nd = 1.0f / sqrtf(nx*nx + ny*ny + nz*nz);
float d = (nx + ny - nz)*nd*0.5f + 0.5f;
putchar(".:-=+*#%@"[(int)(d * 5.0f)]);
}
else
putchar(' ');
}
putchar('\n');
}
}

变形版:
#include <stdio.h> int main()
{
int i, j, k, l, m;
char c = '*'; //ASCII码里面 3 就是一个字符小爱心 for (i=; i<=; i++) printf("\n"); //开头空出5行 for (i=; i<=; i++)
{ //前3行中间有空隙分开来写
for (j=; j<=-*i; j++)
printf(" "); //左边的空格,每下一行左边的空格比上一行少2个 //8*n-2*i
for (k=; k<=*i+; k++)
printf("%c", c);//输出左半部分字符小爱心
for (l=; l<=-*i; l++)
printf(" "); //中间的空格,每下一行的空格比上一行少4个
for (m=; m<=*i+; m++)
printf("%c", c);//输出右半部分字符小爱心
printf("\n"); //每一行输出完毕换行
} for (i=; i<=; i++)
{ //下3行中间没有空格
for (j=; j<=+; j++)
printf(" "); //左边的空格 //8*(n-1)+1
for (k=; k<=; k++)
printf("%c", c);//输出字符小爱心
printf("\n"); //每一行输出完毕换行
} for (i=; i>=; i--)
{ //下7行
for (j=; j<=-*i; j++)
printf(" "); //左边的空格,每下一行左边的空格比上一行少2个//8*(n+1)-2*i
for (k=; k<=*i-; k++)
printf("%c", c);//每下一行的字符小爱心比上一行少4个(这个循环是i--)
printf("\n"); //每一行输出完毕换行
} for (i=; i<=; i++)
printf(" "); //最后一行左边的空格 printf("%c\n", c); //最后一个字符小爱心 for (i=; i<=; i++)
printf("\n"); //最后空出5行 return ;
}

#include <stdio.h>
#include <math.h> #define A 3 void print(void)
{
double x,y; for(y=-;y<=;y+=0.3)
{
for(x=-;x<=;x+=0.2)
if(fabs(sqrt(x*x+y*y)-A*sin(*atan(y/x)))<= ||fabs(sqrt(x*x+y*y)-A*sin(*atan(-y/x)))<=)
printf("*");
else printf(" ");
printf("\n");
}
for(y=-;y<=;y+=0.2)
{
for(x=-;x<=;x+=0.2)
if(fabs(y)-0.65*x*x>=0.2)
printf("*");
else printf(" ");
printf("\n");
}
} int main(void)
{
print();
getchar();
return ;
}

算法链接:http://mathworld.wolfram.com/HeartSurface.html
代码主要参考网址:https://www.zhihu.com/question/20187195
【C语言】用C语言输出“心形”图案的更多相关文章
- Python 一行代码输出心形图案
Python3 >>> print('\n'.join([''.join([('Love'[(x-y)%4]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0. ...
- css实现心形图案
用1个标签实现心形图案,show you the code; <!DOCTYPE html> <html lang="en"> <head> & ...
- Python和Js打印心形
看到一行Python写的代码,会用LovePython输出心形: print('\n'.join([''.join([('LovePython'[(x-y)%10]if((x*0.05)**2+(y* ...
- [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵
一.什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机, ...
- CorelDRAW快速制作绚丽的彩色透明心形
今天小编分享给小伙伴们用CorelDRAW打造绚丽的彩色透明心形.主要使用完美形状组中的心形造型制作出心形图案,经过对图形的模糊操作,再经过图框精确剪裁,最后添加一个彩虹渐变色实现绚丽的彩色透明效果. ...
- c语言心形告白代码实现
c语言心形告白代码实现 1.彩色告白 include<stdio.h> include<math.h> include<windows.h> include< ...
- 心形java和C语言2019/10/17
在网上无意中看到这个代码,学习了一下心形函数的知识:http://mathworld.wolfram.com/HeartCurve.html package dada; /** * 了解Heart C ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- c语言关于二进制的输出
c语言中的二进制输出是没有占位符的,不像八进制:%o: 和十六进制:x%: c中二进制的输出 //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值 void printbinry( ...
随机推荐
- 本地文件包含(LFI)漏洞
PHP file://封装 PHP php://filter PHP ZIP封装LFI 通过/proc/self/environ执行LFI 空字节技术 截断LFI绕过 通过邮件给目标机器发送一个反弹s ...
- springMVC项目配置文件
一.springMVC项目配置文件 1.web.xml文件全局配置 <servlet> <servlet-name> dispatcher </servlet-name& ...
- PIE-SDK For C++矢量数据空间索引的创建
1.功能简介 空间索引的使用便于数据的查询:所以在创建矢量数据的时候创建空间索引,下面对矢量数据如何创建空间索引进行功能介绍. 2.功能实现说明 2.1 实现思路及原理说明 第一步 创建矢量要素数据集 ...
- 1级搭建类103-Oracle 12c 单实例 FS(12.2.0.1+RHEL 7)公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- C++常见编译问题记录
1.类名重复问题 在同一个项目下,分文件编译时,所有的文件最后会被编译到一个可执行程序或dll中,所以同一个项目下文件中不能出现两个相同的类名,否则编译器无法区分使用的到底是那个类,就会出现LINK2 ...
- H5_0013:CSS特色样式集
按比例变化,同时又限制最大宽高 ".start-wrap {", " width:40%;", " top: 83.21%;", " ...
- Spark学习之路 (一)Spark初识 [转]
官网介绍 什么是Spark 官网地址:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智 ...
- c# 删除功能
html界面: js: controller: app:
- javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
这个错误的原因是没有项目使用到了Tomcat中配置的数据源(但是你本地没有配置),关于什么是JNDI看这篇文章就够了® 今天导入一个项目(比较老的),在本地运行时报错: Cannot resolve ...
- Mabitis中的#与$符号区别及用法介绍
这篇文章主要介绍了Mabitis中的 #{}与 ${} 符号区别,需要的朋友可以参考下 一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例 ...