C趣味编程之绘制余弦曲线

最近看到一本C趣味编程的书,感觉还挺有趣的,就在这记记吧

1、用“*”绘制0°~360°的余弦曲线。

咋一看这个题目有点傻眼,这怎么绘制,简单考虑,在纸上画了下余弦曲线,发现曲线是0~180°和180°~360°对称的。

本来每一行需要画两个点,由于对称,只需算出一个点的位置,然后对称过去画出就可以了

假设列宽位62,360°=2π≈6.2,大笑我想大家都懂得。

然后我们就可以编程啦

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

int main(void)
{
    double y;
    int x,m;
    for (y=1;y>=-1;y-=0.1) //y从1到-1就不解释了吧
    {
        m=acos(y)*10; //根据y算出x 10是放大系数
        for (x=1;x<m;x++)
            printf(" ");
        printf("*");
        for ( ;x<62-m;x++) //做对称处理
            printf(" ");
        printf("*\n");
    }
    return 0;
}
得到的图形是这个样子的


下面是思考时间:

怎么来画sin x的图像?

来,同样的,先画画标准图像。

的思路是这样子的。0°~90°,90°到180°是对称的,和上面一样的画法。

由于asin()函数算出的x值是在-180°~180°之间的(反三角函数,高中数学没学好的自闭去),所以可以考虑吧-180°~0°图像移到90°的后面就行了。

我写的程序是这样子的:

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

int main(void)
{
    double y;
    int x,m;
    for (y=1;y>=0;y-=0.1)
    {
        m=asin(y)*10;
        for (x=1;x<m;x++)
            printf(" ");
        printf("*");
        for ( ;x<31-m;x++)
            printf(" ");
        printf("*\n");
    }
    for (y=0;y>=-1;y-=0.1)
    {
        m=asin(y)*-10+31+2;
        for (x=1;x<m;x++)
            printf(" ");
        printf("*");
        for(;x<62+33-m;x++)
            printf(" ");
        printf("*\n");
    }
    return 0;
}
图形是:



画sin其实还可以考虑图形的中心对称,有另外的思路,我就不阐述了微笑

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值