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

傻瓜版

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. css中content-box和border-box当宽度为百分比时的位置区别,vw和%区别

    盒模型 参考代码 // CSS 部分 <style> .box1,.box2{ width: 200px; height: 200px; padding: 20px; margin: 20 ...

  2. Raspbain系统无屏幕无网线通过ssh远程连接树莓派设置wifi步骤

    应该是最简单的步骤了,只需通过电脑.路由器.树莓派在同一个局域网即可,它们之间都是无线连接 1.首先通过路由器连接树莓派,查看树莓派的地址 然后我们依旧可以用网线,以及WIFI,连接树莓派,第一次连接 ...

  3. PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)

    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中 ...

  4. PAT (Basic Level) Practice (中文)1021 个位数统计 (15 分)

    给定一个 k 位整数 1 (0, ,, d​k−1​​>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 0,则有 2 个 0,3 个 1,和 1 个 3. 输入格式: 每个输入包含 ...

  5. HashMap的一些学习

    1.equals和==的对比==用于比较引用和比较基本数据类型时具有不同的功能:A:比较基本数据类型,如果两个值相同,则结果为true而在比较引用时,如果引用指向内存中的同一对象,结果为true; e ...

  6. phpstudy+phpstorm 浏览器没有解析php文件,直接显示源码

    用phpstorm编辑完项目,右键浏览器预览时页面报错:502 Bad Gateway PhpStorm 2019.1 此时默认打开的地址是:localhost:63339/开头的一长串…… 查资料说 ...

  7. centos7最小版配置

    配置启用dns cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 # 修改ONBOOT为yes ONBOOT=yes 重启系统 reboot 安装ne ...

  8. Git分支规范说明

    1.分支类型说明 分支名称 分支描述 唯一 权限管理 release 发布分支,内部分支,当确定需要发布版本时,从develop分支拉出此分支 唯一 最高权限,由版本经理或者团队核心成员组管理 mas ...

  9. 微信小程序判断input是否为空

    微信小程序中用到input值时候,判断其内容是否为空,可以用if-else判断内容的length,也可以给input加点击事件,判断其内容:以下是我解决问题的过程wxml代码 <view cla ...

  10. Android 本地化

    语言配置修饰符来自于ISO639-1标准代码.中文修饰符是-zh. 在res文件夹下创建raw-zh和values-zh文件夹.对应语言的资源文件放入期内. 当Android系统设置的语言为中文时,程 ...