c语言画正弦函数

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:34:40
#include<stdio.h>
#include<math.h>
main(){
double y;
int x,m,i;
printf("y=sin(x) [0<x<2*pi]\n");
for(y=1;y>=-1;y-=0.1){
if(y>=0){
m=asin(y)*10;
for(x=1;x<m;x++)printf(" ");
printf("*",m);
for(;x<31-m;x++)printf(" ");
printf("*\n");}
else{
m=-1*asin(y)*10;
for(i=0;i<32;i++)printf(" ");
for(x=1;x<m;x++)printf(" ");
printf("*",m);
for(;x<31-m;x++)printf(" ");
printf("*\n",m);
}
}
}

请帮忙解释每行算法的意思~~

首先,你输出的不是正弦图像,而是反正弦图像。
#include<stdio.h>
#include<math.h>
int main(){
double y;
int x,m,i;
printf("y=sin(x) [0<x<2*pi]\n");
for(y=1;y>=-1;y-=0.1){//表示y的取值范围是[-1,1]
if(y>=0){
m=asin(y)*10; //反正弦函数,确定空格的数量,最大值为15
for(x=1;x<m;x++)printf(" ");
//printf("*",m);
printf("*");//注意此时不换行,因为后面还有一个点
for(;x<31-m;x++)printf(" ");//输出第二个点,并换行
printf("*\n");}
else{//同理输出y小于0的点
m=-1*asin(y)*10;
for(i=0;i<32;i++)printf(" ");
for(x=1;x<m;x++)printf(" ");
//printf("*",m);
printf("*");
for(;x<31-m;x++)printf(" ");
printf("*\n",m);
}
}
getchar();
return 0;
}

简单点这么说吧。。
正弦函数图像是对称的,所以在每行打印两个星号。
用反正弦函数asin()得出各点的坐标关系。
而for(y=1;y>=-1;y-=0.1)就是从 0开始描点到 2π。
m=asin(y)*10; 是图