控制台绘制正弦/余弦曲线

余弦曲线

当然了,这里我们不用数组……否则就没技术含量了。

正弦曲线的特点是左右对称,且左边部分的纵坐标是从1一直降到-1的,相应的右边的纵坐标是从-1一直递增到1。难点在于显示器只能按行输出,也就是说输出了一行后不能再掉头输出上一行的信息。

我们自定义一个缩放系数a为10,用acos(-1)*10可以算得等于31,因此总宽度为62,起点的横坐标为0,终点的横坐标为61。因为余弦曲线对称,所以在0~180度,也就是左边部分时,横坐标为k时对应的相同纵坐标的180~360度,也就是右边部分的横坐标为(62-k)。

#include <stdio.h>
#include <math.h>

int main()
{
    double y;
    int x,k;
    for(y=1;y>=-1;y-=0.1)
    {
        k=acos(y)*10;
        for(x=1;x<k;x++)
            printf(" ");
        printf("*");
        for(;x<62-k;x++)
            printf(" ");
        printf("*\n");
    }
    return 0;
}

正弦曲线

正弦曲线就要难得多了……我们依旧沿用余弦曲线示例中的总宽度(62)。

相信对于左边部分大家都可以信手拈来……

        if(1<=k&&k<=15)
        {
            for(x=1;x<k;x++)
                printf(" ");
            printf("*");

            for(;x<30-k;x++)
                printf(" ");
            printf("*\n");
        }

右边部分我也弄了好久,主要是忽略了asin(-1)*10是负数……哎

所以发现了这一点之后就应该将if语句这样写:

if(-15<=k&&k<=-1)

但是还有一点要注意的,我们不是在用数组打印星号,换句话说,对于横坐标而言,打印都得从1开始,而我们的坐标成了负值,该怎么办呢?

我们应该转换它:将负数k变成(31-k)它就成了一个合理的正数了,同样的,在270度的左右90之间也是对称的。而270度对应的宽度为46,那么180~270度之间的k对称到270~360度之间的多少呢?设一个方程就搞定了:

46-(31- k)= x - 46
=>
x = 61 + k

于是乎:

#include <stdio.h>
#include <math.h>

int main()
{
    double y;
    int x,k;
    for(y=1;y>=-1;y-=0.1)
    {
        k=asin(y)*10;

        if(1<=k&&k<=15)
        {
            for(x=1;x<k;x++)
                printf(" ");
            printf("*");

            for(;x<30-k;x++)
                printf(" ");
            printf("*\n");
        }
        else if(-15<=k&&k<=-1)
        {
            for(x=1;x<31-k;x++)
                printf(" ");
            printf("*");

            for(x;x<61+k;x++)
                printf(" ");
            printf("*\n");
        }
    }
    return 0;
}

源码

【源码下载,不需要资源积分】

还有下一篇哦:控制台绘制正弦曲线和余弦曲线同时显示




为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp

时间: 2024-11-03 11:07:31

控制台绘制正弦/余弦曲线的相关文章

控制台绘制正弦曲线和余弦曲线同时显示

看这一篇时如果不会绘制正弦/余弦曲线可以先看看这一篇哦:控制台绘制正弦/余弦曲线 那么,如果想要同时显示的话,我们可能需要在同一行中绘制出3个或者4个点了.我的思路比较简略,不过算法看上去非常非常不整洁,还望得到大家的帮助-- 我通过Y等于二分之根号二和负二分之根号二以及Y轴将整个图形分成4层,从上往下依次绘制.具体看代码啦-- #include <stdio.h> #include <math.h> int main() { double y; int x,k1,k2; for(

控制台绘制正切曲线

前面介绍了:控制台绘制正弦/余弦曲线 , 控制台绘制正弦曲线和余弦曲线同时显示 下面来看看正切曲线吧,其实也都差不多-- #include <stdio.h> #include <math.h> int main() { double y; int x,k; for(y=10;y>=-10;y--) { k=atan(y)*7; if(k>0) { for(x=-14;x<-k;x++) printf(" "); printf("*&

C语言绘制正余弦曲线的方法

今天来学习一个小小的实例,使用C语言实现在屏幕上用"*"显示0-360度的余弦函数cos(x)曲线. 模拟法: #include <stdio.h>#include <math.h>int main(void)...{ double i ; int j,k; for(i=1.0 ; i>=-0.4 ; i -=0.1) ...{ j = (int)(acos(i)*10) ; for(k=0 ; k< j ; k++) printf(" &

&lt;font color=&quot;red&quot;&gt;[置顶]&lt;/font&gt;

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸,本博客会持续更新,感谢您的支持,欢迎您的关注与留言.博客有多个专栏,分别是关于 Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 . Android应用开发 ,而最近会添加的文章将主要是算法和Android,不过其它内容也会继续完善. About the Author 独立 Windows App 和

qwt的安装和移植-

目需要根据实时数据绘制出图表,因此我们找到了qwt库,这个库是一个绘制图表,曲线图,柱状图的统计图标.... 下面我们就详细讲解一下这个库在Larm上的编译和移植 qwt介绍 QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线

《Python数据可视化编程实战》—— 1.8 在代码中配置matplotlib参数

1.8 在代码中配置matplotlib参数 Python数据可视化编程实战matplotlib库提供了强大的绘图功能,是本书用的最多的Python库.在其配置文件即.rc文件中,已经为大部分属性设定了默认值.本节会介绍如何通过应用程序代码修改matplotlib的相关属性值. 1.8.1 准备工作 如前所述,matplotlib配置信息是从配置文件读取的.在配置文件中可以为matplotlib的几乎所有的属性指定永久有效的默认值. 1.8.2 操作步骤 在代码执行过程中,有两种方式更改运行参数

《Python数据可视化编程实战》——1.8 在代码中配置matplotlib参数

1.8 在代码中配置matplotlib参数 matplotlib库提供了强大的绘图功能,是本书用的最多的Python库.在其配置文件即.rc文件中,已经为大部分属性设定了默认值.本节会介绍如何通过应用程序代码修改matplotlib的相关属性值. 1.8.1 准备工作 如前所述,matplotlib配置信息是从配置文件读取的.在配置文件中可以为matplotlib的几乎所有的属性指定永久有效的默认值. 1.8.2 操作步骤 在代码执行过程中,有两种方式更改运行参数:使用参数字典(rcParam

如何改造 Linux 虚拟终端显示文字

简介: 本文就 CJKTTY 补丁如何让 linux 虚拟终端显示汉字的原理进行了讨论,为此介绍了 Linux 虚拟终端和其依赖的硬件的工作原理.过程中我们分析了 Linux 字符终端的不足之处,并向读者介绍前沿的 Wayland system compositor 是什么以及为什么 需要它. CJKTTY 补丁是什么,为什么我写了它 当你不使用 X 的时候,打开电脑,你就在使用虚拟终端.这么多年来它工作的很好,直到它来到了中国.包含中文字符的文件名无法正确显示,中文文档无法阅读.当然可以使用

excel怎么做曲线图

步骤一.打开excel2007,现在我们开始绘制正弦曲线了.需要在上面要输入数据,输入方法就是在在A1/B1上输入弧度和SIN值,然后在A1下面直接输入1-360,在B2上面输入公式"=sin(A2*pi()/180)"回车键即可.现在鼠标放在单元格的右下角,当鼠标变成小黑十字的样子的时候,往下拉,拉完360列即可.如图所示: 步骤二.现在数据输入完成了,我们开始对数据排列了,将A1和B1排除,然后将其他的单元格框选起来,如图所示: 电脑教程 步骤三.点击工具栏的[插入-散点图-带平滑