1.在屏幕上用"*"绘制0~360余弦曲线cos(x)
问题分析与算法设计:
一行中要显示两个点,就要考虑利用其对称性,将屏幕行方向定义为x;
列方向为y;定义图形的总宽度为62;计算出x行0~180时y点的坐标m,那么在同一行
与之对称的180~360y点坐标为62-m;
要计算0~180的y点坐标m可以用acos()函数;(不同的函数不同的返回值)
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1)
{
m=10*acos(y); //乘以10为图形放大倍数;
for(x=1;x<m;x++) printf(" ");
printf("*");
for(;x<62-m;x++) pirntf(" ");
printf("*/n");
}
return 0;
}
2.在屏幕上显示0~360cox(x)和直线f(x)=45*(y-1)+31;
问题分析与算法设计:
图形迭代的关键是要在分别计算出同一行中两个图形的列方向点坐标后,
互相判断相互的位置关系。为此,可先判定图形的交点,再分别控制打印两个
不同的图形。
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,m,n,yy;
for(yy=0;yy<=20;yy++)
{
y=0.1*yy;
m=acos(1-y)*10;
n=45*(y-1)+31;
for(x=0;x<=62;x++)
if(x==m&&x==n) printf("+");
else if (x==n) printf("+");
else if(x==m||x==62-m) printf("*");
else printf(" ");
printf("/n");
}
return 0;
}
3.用“*”画一个空心圆
问题分析与算法设计:
利用圆的对称性及式子:x*x+y*y=r*r可以计算出圆上每一点行列的对应
关系。
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,m;
for(y=10;y>=-10;y--)
{
m=2.5*sqrt(100-y*y); //2.5是屏幕纵横比调节系数;
for(x=1;x<30-m;x++) printf(" ");
printf("*");
for(;x<30+m;x++) printf(" ");
printf("*/n");
}
return 0;
}