1.余弦
#include<stdio.h>
#include<math.h>
main()
{
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");
}
}
y遍历次数即为高度,m为对应点横坐标,x为横轴
每行有两个点需要打印,第一个点为acos(y),此处放大十倍方便观察
两个点以pi为对称轴 即(a+b)/2=pi 即b=2pi(6.2)-a
对应的第一个点m第二个点62-m(放大十倍)
1.思考题 正弦
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int m,x;
for(y=1;y>=-1;y-=0.1)
{
m = asin (y)*10;
if(m>0)
{
for (x=1;x<m;x++)
printf(" ");
printf("*");
for(;x<31-m;x++)
printf(" ");
printf("*\n");
}
else
{
m=31-m;
for(x=1;x<m;x++)
printf(" ");
printf("*");
for(;x<93-m;x++)
printf(" ");
printf("*\n");
}
}
return 0;
}
在0到2pi上,相比于余弦函数,正弦函数没有唯一的对称轴,所以应分情况进行考虑
在0到pi区间,两点以pi/2为对称轴,参照余弦修改容易得出
而在pi到2pi上,因m为负值,此代码对m值进行修改,变为31-m即以pi/2进行轴对称,而后以3/2 *pi为对称轴找出第二个点
2.直线和余弦
#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;
}
yy遍历次数为高度
x从0到62为横轴范围
需要打印的点为两个余弦点和一个直线点(可能有交点)
余弦对应点为x=m和x=62-m 直线对应点为x=n
在x遍历到62后进行换行
2.思考题 正弦和余弦
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,m,n;
for(y=1;y>=-1;y-=0.1)
{
m=acos(y)*10;
n=asin(y)*10;
for(x=1;x<=62;x++)
if(x==m||x==62-m||x==n||x==31-n||x==62+n)
printf("*");
else
printf(" ");
printf("\n");
}
return 0;
}
x=m和62-m对应余弦
此处重点介绍正弦
x=n x=31-n x=62+n
当x在0到pi/2时,x=n 和x=31-n为对应点, 62+n超过范围,未进行打印
相应的,在0到-pi/2上,n不予打印 62+n为以pi/2为轴的对应点 62+n为2*pi+n对应点
3.圆
#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);
for(x=1;x<30-m;x++)
printf(" ");
printf("*");
for(;x<30+m;x++)
printf(" ");
printf("*\n");
}
return 0;
}
同样,y为纵轴
m为y确定时对应的横坐标(左半)
文中30-m中 30为选取的圆点横坐标,应大于半径25,改为40 50亦可
3.思考题 圆加y=x^2
#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,z,m;
for(y=20;y>=-10;y--)
{
for(x=-30;x<=30;x+=1)
{
m=2.5*sqrt(100-y*y);
z=2.5*sqrt(y);
if(x==m||x==-m||x==z||x==-z)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
y轴选取了-10到20,到20是为了更多的表现y=x^2
4.最大最小值和均值
#include<stdio.h>
int main()
{
int integer,i,max,min,sum;
max=-32768;
min=32767;
sum=0;
for(i=1;i<=10;i++)
{
printf("Input number%d=",i);
scanf("%d",&integer);
sum+=integer;
if(integer>max)
max=integer;
if(integer<min)
min=integer;
}
printf("Canceled max score: %d\nCanceled min score: %d\n",max,min);
printf("Average score:%d\n",(sum-max-min)/8);
return 0;
}
无亮点难点…