| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 用C语言到底怎么写出一个心形 -> 正文阅读 |
|
[C++知识库]用C语言到底怎么写出一个心形 |
先上代码:
分享一下对这个可以输出心形的程序的理解。 首先我们看到,在for循环的小括号中有两个变量x,y,这两个变量一个变小、一个变大。 这难免让我们想到二维坐标系! ?这里的y值减小,x值增大,也就是说,程序从左上角开始绘制,一直绘制到右下角,程序结束。 我们看这段代码:
既然是a*a*a-x*x*y*y*y<0.0f,我们不妨让其等于0,得到方程: (x^(2)+y^(2)-1)^(3)-x^(2)y^(3)=0 这个方程我试着在画图软件上画了一下,没想到真的是心形: ? ?现在,还有几个问题需要说一下: 第一、a*a*a-x*x*y*y*y<0.0f,为什么是小于号 比如圆方程:x*x+y*y=1 只有(x,y)使x*x+y*y<1的时候,(x,y)才会在圆内 第二、y=1.5f;y>-1.5f;y-=.1f,这里为什么是”.1f“而不是0.1f ”.1f“就是'0.1f',这是事实,有图为证 第三、a*a*a-x*x*y*y*y<0.0f?'x':' ' 如果a*a*a-x*x*y*y*y<0.0f为true那么就输出x,否则输出空格 第四、for循环中的表达式是凭空捏造的吗 很显然不是。我们需要在找到一个表达式之后,先在画图软件上确定边界值(如果能看出来当然不用画),在此之后确定一个合适的步长(很重要)即可 第五、后面为什么有一个getchar() 使程序不马上退出 那么现在就真相大白了,只要找到一个合适的心形函数就可以写出一个可以输出心形的程序! 现在来练习一下! 方程:c:?(x^(2)+y^(2))^(2)+4y?(x^(2)+y^(2))-4x^(2)=0
虽然有点丑…… 总结下来就是步长的问题,比如说如果跑出来的图形偏瘦了,那么就减少步长。 原因是什么呢? 就是既然图形瘦,那么就说明容纳的可以进行运算的x值偏大了,将x值以0.1为单位改小就可以了。(0.1是我感觉比较合适的单位);y的步长同理。 【其实我最开始找的方程不是这个,后来发现输出成了一种奇怪的图形才又找了一个】 昨天最开始找的用于练习的方程是这个: x^(2)-abs(x)y+y^(2)=4 ?然后开始的代码是这样的
输出成了这样,我当时都惊呆了 ?其实最开始的那个思想并没有问题,只是我的代码可能存在一些错误。至于我怎么发现的这个bug呢?我在翻之前写的一个求三角形面积代码时,发现了一句很显眼的注释 //这里没必要取绝对值,但是因此发现:abs()中的值只能是整数,此处写成fabs()才可以,不然值是0
我瞬间明白了!看来把求绝对值函数改一下就行了,注意头文件。
输出的还是挺好看的: ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 8:51:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |