2.繪制余弦曲線和直線
在屏幕上顯示0~360度的cos(x)曲線與直線f(x)=45*(y-1)+31的迭加圖形。其中cos(x)圖形用“*”表示,f(x)用“+”表示,在兩個(gè)圖形相交的點(diǎn)上則用f(x)圖形的符號(hào)。
*問(wèn)題分析與算法設(shè)計(jì)
本題可以在上題的基礎(chǔ)上進(jìn)行修改。圖形迭加的關(guān)鍵是要在分別計(jì)算出同一行中兩個(gè)圖形的列方向點(diǎn)坐標(biāo)后,正確判斷相互的位置關(guān)系。為此,可以先判斷圖形的交點(diǎn),再分別控制打印兩個(gè)不同的圖形。
*程序注釋與說(shuō)明
#include
#include
void main()
{
double y;
int x,m,n,yy;
for(yy=0;yy<=20;yy++) /*對(duì)于第一個(gè)y坐標(biāo)進(jìn)行計(jì)算并在一行中打印圖形*/
{
y=0.1*yy; /*y:屏幕行方向坐標(biāo)*/
m=acos(1-y)*10; /*m: cos(x)曲線上y點(diǎn)對(duì)應(yīng)的屏幕列坐標(biāo)*/
n=45*(y-1)+31; /*n: 直線上y點(diǎn)對(duì)應(yīng)的列坐標(biāo)*/
for(x=0;x<=62;x++) /*x: 屏幕列方向坐標(biāo)*/
if(x==m&&x==n) printf("+"); /*直線與cos(x)相交時(shí)打印“+”*/
else if(x==n) printf("+"); /*打印不相交時(shí)的直線圖形*/
else if(x==m||x==62-m) printf("*"); /*打印不相交時(shí)的cos(x)圖形*/
else printf(" "); /*其它情況打印空格*/
printf("\n");
}
}
在屏幕上顯示0~360度的cos(x)曲線與直線f(x)=45*(y-1)+31的迭加圖形。其中cos(x)圖形用“*”表示,f(x)用“+”表示,在兩個(gè)圖形相交的點(diǎn)上則用f(x)圖形的符號(hào)。
*問(wèn)題分析與算法設(shè)計(jì)
本題可以在上題的基礎(chǔ)上進(jìn)行修改。圖形迭加的關(guān)鍵是要在分別計(jì)算出同一行中兩個(gè)圖形的列方向點(diǎn)坐標(biāo)后,正確判斷相互的位置關(guān)系。為此,可以先判斷圖形的交點(diǎn),再分別控制打印兩個(gè)不同的圖形。
*程序注釋與說(shuō)明
#include
#include
void main()
{
double y;
int x,m,n,yy;
for(yy=0;yy<=20;yy++) /*對(duì)于第一個(gè)y坐標(biāo)進(jìn)行計(jì)算并在一行中打印圖形*/
{
y=0.1*yy; /*y:屏幕行方向坐標(biāo)*/
m=acos(1-y)*10; /*m: cos(x)曲線上y點(diǎn)對(duì)應(yīng)的屏幕列坐標(biāo)*/
n=45*(y-1)+31; /*n: 直線上y點(diǎn)對(duì)應(yīng)的列坐標(biāo)*/
for(x=0;x<=62;x++) /*x: 屏幕列方向坐標(biāo)*/
if(x==m&&x==n) printf("+"); /*直線與cos(x)相交時(shí)打印“+”*/
else if(x==n) printf("+"); /*打印不相交時(shí)的直線圖形*/
else if(x==m||x==62-m) printf("*"); /*打印不相交時(shí)的cos(x)圖形*/
else printf(" "); /*其它情況打印空格*/
printf("\n");
}
}