趣味C语言——绘制余弦曲线

举报
Code_流苏 发表于 2022/04/18 18:02:04 2022/04/18
【摘要】 趣味C语言——绘制余弦曲线

趣味C语言——绘制余弦曲线

前言:一起来感受编程之美吧!

🐼本篇内容简介一、概念说明-->二、问题呈现-->三、源码实现(+注释)-->四、输出结果展示-->五、简要解释

一、概念说明

1.1余弦曲线的定义

余弦曲线一般指余弦波。 余弦曲线或余弦波(cosinwave)是一种来自数学三角函数中的正弦比例的曲线。也是模拟信号的代表,与代表数字信号的方波相对。

1.2简单补充说明

余弦曲线的形状就像完美的海上波浪般,以三角函数余弦比例改变而形成。

标准的纯余弦函数公式为:
在这里插入图片描述

1.3余弦曲线图样

在线绘制了一个图,仅供参考理解:
在这里插入图片描述

二、问题呈现

Problem Description

在屏幕上用字符“*”显示0°~360°的余弦函数cos(x)曲线。

Input

Output

用字符“*”显示的0°~360°的余弦函数cos(x)曲线

Sample Input

Sample Output

*                                                             *
   *                                                      *
     *                                                  *
      *                                                *
        *                                            *
         *                                          *
          *                                        *
           *                                      *
            *                                    *
             *                                  *
              *                                *
               *                              *
                *                            *
                 *                          *
                  *                        *
                   *                      *
                     *                  *
                      *                *
                       *              *
                         *          *
                              **

三、源码实现(+注释)

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

int main(){
	double y;//y为列方向
	int x,m;//定义两个整形变量 x为行(横)方向,m代表弧度
        //y为列方向,值从1到-1,步长为0.1
	for(y=1;y>=-1;y-=0.1)
	{
        //计算出y对应的弧度m,10为图形放大的倍数
		m = acos(y)*10;
        //控制打印左侧的*号
		for(x=1;x<m;x++)
			printf(" ");
		printf("*");
        //控制打印同一行中对称的右侧*号
		for(;x<62-m;x++) 
			printf(" ");
		printf("*\n");
		
	}
	return 0;
}

四、输出结果展示

4.1输出结果

*                                                             *
   *                                                      *
     *                                                  *
      *                                                *
        *                                            *
         *                                          *
          *                                        *
           *                                      *
            *                                    *
             *                                  *
              *                                *
               *                              *
                *                            *
                 *                          *
                  *                        *
                   *                      *
                     *                  *
                      *                *
                       *              *
                         *          *
                              **

--------------------------------
Process exited after 0.2912 seconds with return value 0
请按任意键继续. . .

4.2输出结果(图示版)

在这里插入图片描述


五、简要解释

5.1解题关键

关键在于余弦曲线在==0°~360°的区间==内。

注释:在这区间内意味着什么呢?一行中要显示两个点,而对一般的显示器来说, 只能按行输出,即:输出第一行信息后,向下一行输出,不可再到上一行。因此为了满足本题要求的图形,就必须在一行中一次顺序输出两个字符“ * ”,这样才能在一行中显示两个点。

5.2细节理解

  • 为了得到余弦函数cos(x)图形在一行上的两个点,同时要考虑利用cos(x)的左右对称性。将屏幕的行方向定义为 x列方向定义为 y,则 0°~180°的图形与 180°~ 360°的图形是左右对称的

  • 定义图形的总宽度为62列,计算出x行0°~180°时y点的坐标m,那么在同一行与之对称的180°…360°的y点的坐标就应为62-m。程序中利用反余弦函数(arccos)acos计算坐标(x,y)的对应关系。

  • acos定义在math数学函数库(math.h)。

    附: math.h头文件中声明了常用的一些数学运算,比如乘方,开方运算等等。

5.3小提示

用这种方法编出的程序可能看起来比较精简,但是需要一定的技巧在里面。自然,方法不止这一种也可以采用数组去实现,借助数组可能会更简单一些。


作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)

★喜欢的话,还请多多点赞与关注! 感谢支持!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。