在你们的世界里,是不是觉得程序猿一点浪漫都不懂?其实不是的,程序猿的世界也是很浪漫滴!

傻瓜版

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语言输出“心形”图案的更多相关文章

  1. Python 一行代码输出心形图案

    Python3 >>> print('\n'.join([''.join([('Love'[(x-y)%4]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0. ...

  2. css实现心形图案

    用1个标签实现心形图案,show you the code; <!DOCTYPE html> <html lang="en"> <head> & ...

  3. Python和Js打印心形

    看到一行Python写的代码,会用LovePython输出心形: print('\n'.join([''.join([('LovePython'[(x-y)%10]if((x*0.05)**2+(y* ...

  4. [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵

    一.什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机, ...

  5. CorelDRAW快速制作绚丽的彩色透明心形

    今天小编分享给小伙伴们用CorelDRAW打造绚丽的彩色透明心形.主要使用完美形状组中的心形造型制作出心形图案,经过对图形的模糊操作,再经过图框精确剪裁,最后添加一个彩虹渐变色实现绚丽的彩色透明效果. ...

  6. c语言心形告白代码实现

    c语言心形告白代码实现 1.彩色告白 include<stdio.h> include<math.h> include<windows.h> include< ...

  7. 心形java和C语言2019/10/17

    在网上无意中看到这个代码,学习了一下心形函数的知识:http://mathworld.wolfram.com/HeartCurve.html package dada; /** * 了解Heart C ...

  8. C#语言基础— 输入与输出

    C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...

  9. c语言关于二进制的输出

    c语言中的二进制输出是没有占位符的,不像八进制:%o: 和十六进制:x%: c中二进制的输出 //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值 void printbinry( ...

随机推荐

  1. 【剑指Offer】60、按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题解:BFS 主要的方法与BFS写法没什么区 ...

  2. 推荐15款Google Chrome 插件

    Google Chrome是由Google开发的免费网页浏览器.Chrome是化学元素“铬”的英文名称,过去也用Chrome称呼浏览器的外框.Chrome相应的开放源代码计划名为Chromium,而G ...

  3. ZedGraph怎样在双击图形后添加箭头标记

    场景 在ZedGraph的曲线图上,双击图时会在图形上生成箭头符号标记. 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...

  4. Python之三:运算符与表达式

    1.运算符: 1.1.运算符种类: 运算符  名称  说明  例子  + 加    5+4  - 减      *  乘      /  除      //  取整除  商的整数部分  3//2,结果 ...

  5. nginx技术

    Nginx 处理高并发,单台服务器存在服务瓶颈 Nginx属于nio ,noblocking Io非阻塞式的 Apache属于Bio,Blocking IO 阻塞式的 安装部分 依赖安装:yum -y ...

  6. java exec python program

    I find three methods, the first is using jython, the module of jython can transform the type of data ...

  7. ECMAScript基本语法——⑤运算符 三元运算符

    ?: 简化ifelse的操作

  8. unity ui中使用onmouseover

    unity ui中鼠标移进或者移出的触发方式与2d.3d的不同,2d.3d物体使用的是onmouseover,ui使用的是OnPointerEnter.需要实现以下两个接口. public class ...

  9. 858. Prim算法求最小生成树(模板)

    给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给定一张边带权的无向图G=(V, E),其中V表示 ...

  10. PWA - 整体(未完)

    渐进式 Web 应用(PWA) 运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序. PWA 的优势 可被发现 易安装 manifest(https://develop ...