您的位置:首页 > 编程语言 > C语言/C++

C语言 程序 用*显示cos(x)和sin(x)

2016-07-11 10:24 399 查看
1.绘制余弦曲线

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

*问题分析与算法设计

如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。

关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个“*”。

为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就 应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。使用这种方法编出的程序短小精炼,体现了一定的技巧。

#include <stdio.h>

#include <math.h>

int main()

{

double y;

int x;

int m;

for( y = 1;y >= -1;y -= 0.1)

{

x = acos(y) * 10;

for(m = 0;m < x;m++ )//前面的空格数

{

printf(" ");

}

if(x != 31)//防止中间点打两次

{

printf("*");

}

for(m = x + 1;m < 62 - x; m++)

{

printf(" ");

}

printf("*\n");

}

return 0;

}

如何实现sin(x)曲线图形显示。

sin(x)和cos(x)道理一样,sin不是对称的,却可以分为两个对称图形,用两个对称图形分别去看。

sin的反函数显示的x是负的,可以取负加31实现。

#include <stdio.h>

#include <math.h>

int main()

{

double y;

int x;

int m;

for( y = 1;y >= 0;y -= 0.1)//前半个图形

{

x = asin(y) * 10;

for(m = 0;m < x;m++ )

{

printf(" ");

}

printf("*");

for(m = x + 1;m < 31 - x; m++)

{

printf(" ");

}

if(y != 0)

{

printf("*\n");

}

}

for( y = 0;y >= -1;y -= 0.1)//后半个图形

{

x = -asin(y) * 10 + 31;

for(m = 0;m < x;m++ )

{

printf(" ");

}

printf("*");

for(m = x + 1;m < 93 - x; m++)

{

printf(" ");

}

printf("*\n");

}

return 0;

}

一个在努力中的未来程序员,如果有更好的算法,欢迎评论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 程序