看这一篇时如果不会绘制正弦/余弦曲线可以先看看这一篇哦:控制台绘制正弦/余弦曲线
那么,如果想要同时显示的话,我们可能需要在同一行中绘制出3个或者4个点了。我的思路比较简略,不过算法看上去非常非常不整洁,还望得到大家的帮助……
我通过Y等于二分之根号二和负二分之根号二以及Y轴将整个图形分成4层,从上往下依次绘制。具体看代码啦……
#include <stdio.h>
#include <math.h>
int main()
{
double y;
int x,k1,k2;
for(y=1;y>=-1;y-=0.1)
{
k1=acos(y)*10;
k2=asin(y)*10;
if(k1<k2&&k2>=0)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(x=k1+1;x<k2;x++)
printf(" ");
printf("*");
for(;x<30-k2;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*\n");
}
else if(k2<k1&&1<=k2&&k2<=15)
{
for(x=1;x<k2;x++)
printf(" ");
printf("*");
for(x=k2+1;x<k1;x++)
printf(" ");
printf("*");
for(;x<30-k2;x++)
printf(" ");
printf("*");
for(x=30-k2;x<62-k1;x++)
printf(" ");
printf("*\n");
}
else if(k1<(30-k2)&&(30-k2)<(62-k1)&&-15<=k2&&k2<=-1)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(;x<31-k2;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*");
for(;x<61+k2;x++)
printf(" ");
printf("*\n");
}
else if((62-k1)<(31-k2)&&-15<=k2&&k2<=-1)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*");
for(;x<31-k2;x++)
printf(" ");
printf("*");
for(;x<61+k2;x++)
printf(" ");
printf("*\n");
}
return 0;
}
大家有什么更好的想法欢迎留言啊~
原文地址:http://blog.csdn.net/nomasp/article/details/45389379