王鑫221 2021-07-05 18:21 采纳率: 40%
浏览 185
已结题

c语言程序设计绘制函数图形

初等函数曲线图形的简易绘制:设屏幕显示文本是25行,
80列,可以用“+”和“——〉”号画坐标系,用“*”号画曲线上的点。用户给出初等函数,如cos(x),e^x,x^3
-3x+1等,及x的取值范围,程序绘制出对应初等函数的曲线图。
功能要求:
1.从键盘上输入x的显示范围;
2.根据x的取值范围在屏幕上画出函数图形;
3.函数的选择可以由键盘输入得到。

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-07-05 18:30
    关注

    设定x的步长,先计算出80列的函数值组成数组,然后根据值的大小逐行输出即可

    #include <math.h>
    
    #define NANCHAR ' '
    #define NAN -99999
    char grid[25][80];
    double data[80];
    double dmax = 0;
    double dmin = 0;
    
    //x*x*x-3*x+1
    void getminmax(int s,int e)
    {
        float step = (e-s)/80.0;
        int k = 0;
        for(double i=s;i<=e;i+=step)
        {
            double y = i*i*i-3*i+1;
            //double y = cos(i);
            if(i==s)
                dmax = dmin = y;
            else if(dmax < y)
                dmax = y;
            else if(dmin > y)
                dmin = y;
            data[k++] = y;
        }
    }
    
    void getV(int range)
    {
        float yscale = (dmax-dmin)/25; //图形适当进行压缩或拉升
        float xscale = range/80.0;
        int k = 0;
        for(double i=0;i<range;i+=xscale)
        {
            if(data[k] != NAN)
            {
                int y = int((dmax-data[k])/yscale);
                int x = int(i/xscale);
                grid[y][x] = '*';
            }
            k++;
        }
    }
    
    
    void display()
    {
    
        int i,j;
        for(i=0;i<25;i++)
        {
            for(j=0;j<80;j++)
            {
                printf("%c",grid[i][j]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    void main()
    {
        int i,j;
        for(i=0;i<25;i++)
            for(j=0;j<80;j++)
                grid[i][j] = NANCHAR;
        for(j=0;j<80;j++)
            data[j] = NAN;
        int s,e;
        scanf("%d%d",&s,&e);
        getminmax(s,e);
        getV(e-s);
        display();
        system("pause");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月18日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题