C语言6行代码画圆

  这一方法是受到milo大神用C语言画心的启发而想到的。

  代码如下:

#include<stdio.h>
int main(){
    for(double l=1;l>-1;l-=0.05,printf("\n"))
        for(double w=1;w>-1;w-=0.025)
            printf((l*l + w*w<=1)?"=":" ");
} 

  效果:

  事实上,代码的逻辑和背景知识是很简单的,就是从左到右,从上到下,用等号填充一个圆而已。

  我们知道,圆方程的标准形式为:

  

  当a b r的值确定后,圆也就完全确定了,为了简化方程,我们令a b 为0,r为1,则该圆全部落-1<x<1,-1<y<1的范围中,这也是l和w范围的来源。

  接下来,很自然的就要思考字符数量了,一般而言,半角文字的长宽比为1:2(很汗颜,这也是从milo大神的文章中知道的),所以宽度增量设置为长度的一半就行了,如果为1:1的话,会得到一个椭圆。为什么增量设置为0.05和0.025呢?首先,增量的设置的越小,得到的圆就越圆,但是过大的话一屏无法显示完全,0.05和0.025是一个较优值,读者也可以尝试其他值。

  整段代码中最难理解的一句应该是

printf((l*l + w*w<1)?"=":" ");

  其实只是一个简单的双目运算符应用,意思是,如果该点落于圆中,则用“=”符号填充,否则用空格代替。

  说到底只是数学的简单应用罢了,理论上来说,只要有相对应的图像方程,这段代码也可以进行相应的修改从而输出对应图像。读者有兴趣不妨试试:-)。

原文地址:https://www.cnblogs.com/haolanHwang/p/10084319.html

时间: 2024-10-14 06:52:39

C语言6行代码画圆的相关文章

用 4 行代码画一幅中国地图

为什么是Python 先来聊聊为什么做数据分析一定要用Python或R语言.编程语言这么多种,Java, PHP都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用Python语言? 数据分析只是一个需求,理论上来讲,任何语言都可以满足任何需求,只是麻烦与简易之别.Python这门语言诞生也相当之早,它的第一个版本是26年前发表的,曾经(或者说当前)也被用于web开发,但是就流行程度来说,远远干不过Java和PHP. 东方不亮西方亮,在与Java干仗失败的这20几年时光里,Python练就

运用椭圆画法,45行代码画出任意正多边形

最近做Box2dWeb开发时,想写个创建正多边形的功能,可是由于学识尚浅,我在草稿纸上画了,想了一个上午也没有研究出什么好方法.后来翻抽屉的时候,找出了以前哥哥画的一张用同心圆画椭圆的示意图.看到这幅画,我不禁在想椭圆不就是一个N边形吗?圆不就是一个正N边形吗?如果把两个同心圆的半径设定为相等,画出来的椭圆不就是一个圆吗?因此,我立刻开始实验.原本我以为比较难,会用到圆的解析式之类的,没想到就45行代码就搞定了,主要用到的数学知识就是sin和cos. 也许有人不明白如何用同心圆画椭圆,我就借用网

神级程序员教你如何用四行代码画出一幅中国地图!Python就是牛逼

前面两行引入相应的库,真正的代码就4行,够简单吧.第1行甚至可以不写,它定义了图的大小.第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: 你用 Java 的 4 行代码画一个地图出来? 然后我们开始画上国家,又是1行代码: m.drawcountries(linewidth=1.5) 就变成了这样: 看上去有点变形,这是因为我们没有添加任何投影的原因, Basemap 提供 24 种不同的投影方式,你可以自己一个个试一下,比较常用的是 兰勃特投影 ,我们添加一下: m

30 行代码绘出你的微信朋友统计图

前言 大家好,这里是「brucepk」爬虫 系列教程.此文首发于「brucepk」公众号,欢迎大家关注.此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点. 学编程是一件枯燥的事情,比较好的方法是在实际项目中学习成长.今天带来的是 30 行代码画出你的微信朋友的性别统计图. 最近发现一个有意思的库:itchat,itchat 是一个开源的微信个人号接口.今天就用 itchat 来统计自己微信好友性别的比例并用柱形图展示出来. 项目环境:pytho

WPF使用Path画圆的一个示例代码

原文:WPF使用Path画圆的一个示例代码 <Path Fill="red" Data="M 0,0 A 20,20 45 1 1 0,1 Z"/> 1. Fill是指Path的填充颜色 2. Data是Path的路径, M 0,0  --画笔移到0,0处: A 20,20 --画半径为20的圆弧: 45 1 1 --- 45为转角角度,1:是否有大小弧,画椭圆时才有用:1:顺时针 0,1 --- 终点 Z --- 闭合 原文地址:https://www

第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约

智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试环境. 智能合约就是运行在以太坊上的程序.客户端可以通过Web3.js API调用智能合约,而智能合约本身又可以直接访问以太坊网络,也就是说,智能合约前面连接着客户端,后面连接着以太坊网络,起到了承前启后的作用,而且通过智能合约,可以让整个以太坊网络更灵活,可控性更强.其实智能合约的作用相当于微软O

从零开始学C语言,200行代码完成一个打字母游戏!

很多刚开始学习编程的同学都希望自己可以去开发一些游戏,当学习了c语言的时候却发现总是用c语言去解决一些数学问题,今天我就分享给大家一个我学习c语言时候学到的一些好玩的东西,希望可以帮助大家保持对编程的兴趣. 创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习

《第一行代码——Android》封面诞生记

<第一行代码——Android>已经上市快一个月了,目前销售情况还算良好,也是特别感谢众多朋友的支持.其实一本书如果想要卖的好,除了内容必 须要给力之外,封面的设计也是至关重要的,而本书的封面无疑是在充实的内容之外又披上了一层华丽的外衣.作为作者,其实我的任务就是将内容写好而已,其它 所有相关工作都不是由我负责的.本书封面设计的所有细节都是由陈冰先生一手抓起的,之后他在图灵社区上记录了本书封面的诞生过程.在经过他同意的情况下, 我将这篇文章转到我的博客上,也是让感兴趣的朋友们了解一些不为人知的

ios 仿某d的头像画圆

今天学习某app,用名字做头像,画圆,里面写字 一开始,打算做头像是image格式.所以就: CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color