问题描述:
在控制台用”*“绘制出0°~360°的正余弦曲线
问题分析:
如果采用数组记录点,则问题就相当简单,如果不采用数组,关键在于一行中要显示两个点,我们考虑利用正余弦函数的对称性,
计算出一行中另一个点的位置。
程序代码:
#include <stdio.h>
#include <math.h>
void drawCosLine();
void drawSinLine();
int main()
{
drawSinLine();
drawCosLine();
return 0;
}
void drawCosLine()
{
int x,m;
double y;
for(y=1; y>=-1; y-=0.1)
{
m=(int)(acos(y)*10);
for(x=1; x<m; x++)
printf(" ");
printf("*");
for(; x<62-m; x++)
printf(" ");
printf("*\n");
}
}
void drawSinLine()
{
int x,m;
double y;
for(y=1; y>=-1; y-=0.1)
{
if(y>=0)
{
m=(int)(asin(y)*10);
for(x=1; x<m; x++)
printf(" ");
printf("*");
for(; x<31-m; x++)
printf(" ");
printf("*\n");
}
else{
m=(int)(-1*asin(y)*10);
for(x=0; x<=31; x++)
printf(" ");
for(x=1; x<m; x++)
printf(" ");
printf("*",m);
for(; x<31-m; x++)
printf(" ");
printf("*\n",m);
}
}
}