【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( ...
随机推荐
- PAT (Basic Level) Practice (中文)1057 数零壹 (20 分) (按行输入带空格的字符串)
给定一串长度不超过 1 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定 ...
- IDEA 和 Webstorm JAR包方式破解
IDEA 和 Webstorm JAR包方式破解 IDEA 我是用的IDEA版本是 18.3,更新版本的IDEA很多激活码都不能用了,或者不好激活了. 首先下载相应的 软件版本 和破解 jar包. 下 ...
- BZOJ3473&&BZOJ3277串
BZOJ3473&&BZOJ3277串 题面 自己找去 HINT 对于所有串建立一个广义后缀自动机,对于每一个节点开一个set表示这个节点接受的子串在哪些串里出现过,然后在parent ...
- 二叉堆(1)BinaryHeap
封装一个简单二叉堆,亦可视为优先队列. 测试文件 main.cpp: #include <iostream> #include "BinaryHeap.h" using ...
- Eclipse 连接 SQL Server 2012数据库 教程
教程:https://wenku.baidu.com/view/78b9957e0066f5335a8121b7.html
- MySQL的聚合函数
MySQL的聚合函数 网站:https://www.runoob.com/mysql/mysql-functions.html 函数名 功能描述 count() 计数 sum() 求和 avg() 平 ...
- P问题,NP问题,NPC问题学习笔记
参考:https://www.luogu.org/blog/styx-ferryman/chu-sai-bei-kao-gan-huo-p-wen-ti-np-wen-ti-npc-wen-ti-sh ...
- C#继承是个啥
继承: 字面意思就是继承 如地主老王有500亩地,老王的儿子小王可以种这五百亩地可以随便拿这五百亩地上面的任何东西 如Controller 你要用从一个controller调用另一个controlle ...
- 机器学习作业(八)异常检测与推荐系统——Matlab实现
题目下载[传送门] 第1题 简述:对于一组网络数据进行异常检测. 第1步:读取数据文件,使用高斯分布计算 μ 和 σ²: % The following command loads the datas ...
- python常用的正则表达式,持续更新<<
# -*- coding: utf-8 -*- import re str_0 = 'Aqin1012Heheheaaaaaaahehe如何da' def re_str(re_str_0,str_0) ...