【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( ...
随机推荐
- sqli-labs5-10(全程sqlmap)
sqlmap注入教程:https://www.cnblogs.com/ichunqiu/p/5805108.html 前五关直接可以用默认的sqlmap语法跑: python sqlmap.py -u ...
- Qt Installer Framework翻译(7-8)
C++ API C ++ API文档是为开发Qt Installer Framework的开发人员编写的. 它描述了内部API,因此没有兼容性保证. 此外,该文档尚在开发中,因此缺少部分内容,而其他部 ...
- git 命令 总结
1.添加所有文件 git add . 2.添加某个文件 git add filename 3.commit 注释 git commit -m'commit 注释' 4.修改commit 注释 git ...
- Win10安装2 —— 版本的选择与下载
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12368795.html 一:各个版本的区别 1.Windows10 Home(家 ...
- centos yum 安装openresty
yum 安装openresty sudo yum install yum-utils -y sudo yum-config-manager --add-repo https://openresty.o ...
- 论文阅读笔记(五)【CVPR2012】:Large Scale Metric Learning from Equivalence Constraints
由于在读文献期间多次遇见KISSME,都引自这篇CVPR,所以详细学习一下. Introduction 度量学习在机器学习领域有很大作用,其中一类是马氏度量学习(Mahalanobis metric ...
- MariaDB 安装配置记录
1.集群搭建记录 iptables --append INPUT --protocol tcp \ --source 192.168.126.129 --jump ACCEPT iptables -- ...
- JS图片轮换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- django orm查询和后端缓存的使用
django orm 查询 1 字段后(db_column='age') (null=True)#表示数据库里面的该字段数据可以为空 (blank=True)#表示前端表单提交的时候可以为空 (db_ ...
- Chrome 提标 您的浏览器限制了第三方Cookie...解决方法
最近升级Chrome后会出现 您的浏览器限制了第三方Cookie,这将影响您正常登录,您可以更改浏览器的隐私设置,解除限制后重试. 解决方法: chrome://flags/ 把这句复制到浏览器回车 ...