先附上代码及运行结果:
具体代码资源可下载:https://download.youkuaiyun.com/download/asdwzx142/11646582
C语言:
#include<stdio.h>
#include<math.h>
//在屏幕上用"*"显示0^0~360^0的余弦函数cos(x)曲线
void ShowCos();
void main(){
ShowCos();
}
void ShowCos(){
double y;
int x,m;
for(y=1;y>=-1;y-=0.1){
m=acos(y)*10;
for(x=1;x<m;x++){
printf(" ");
}
printf("*");
for(;x<62-m;x++){
printf(" ");
}
printf("*\n");
}
}
运行结果:
详解:
输出余弦曲线在0^o~360^o的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了输出余弦函数的图像就必须在一行中输出两个"*"。
由于这个特性,在Dos控制台输出时每一行间距相等,而余弦函数图像是随着x轴方向改变,所以需要利用到反余弦函数的特性求得余弦函数从-1到1均匀变化时图像点距离y轴的距离。
定义:y为输出行数,m为需要输出的空格数,x为累计数
#include<stdio.h> //引入基础头文件
#include<math.h> //为了使用math.h头文件中的acos()反余弦函数
for(y=1;y>=-1;y-=0.1){ //由于acos()反余弦函数的定域义为[-1,1],如此-=0.1,总共输出21行。均匀变化的精度为0.1
m=acos(y)*10; /*m为每行先需要输出多少的空格,空格数可以利用反余弦从1至-1对应的y值与余弦函数0至PI距离y轴相等求得。由于此时余弦函数的值域为0至Pi也就是0至3.1415926,为了使空格数既是整数又保证了其合理性所以*10使其输出空格数为0至31
for(x=1;x<m;x++){ //x记录输出空格数,并输出指定m个空格
printf(" "); //输出空格
}.
复习一下余弦,反余弦函数
https://baike.baidu.com/item/%E5%8F%8D%E4%BD%99%E5%BC%A6%E5%87%BD%E6%95%B0/2473336?fr=aladdin
图像:
余弦函数
反余弦函数:
printf("*"); //输出“*”
for(;x<62-m;x++){ /*注意此时for语句第一个;前代表使用x,其x值为m-1。利用余弦函数对称性,且Pi*10输出31个空格*2即总共62空格。观察余弦图,62减去后面与前面相同的空格数即为中间仍需要输出的空格数。*/
printf(" ");} //输出相应的空格数
printf("*\n"); //再次输出“*”并换行输出下一行内容
}
}