1.繪制余弦曲線
在屏幕上用“*”顯示0~360度的余弦函數(shù)cos(x)曲線
*問題分析與算法設(shè)計(jì)
如果在程序中使用數(shù)組,這個(gè)問題十分簡(jiǎn)單。但若規(guī)定不能使用數(shù)組,問題就變得不容易了。
關(guān)鍵在于余弦曲線在0~360度的區(qū)間內(nèi),一行中要顯示兩個(gè)點(diǎn),而對(duì)一般的顯示器來說,只能按行輸出,即:輸出第一行信息后,只能向下一行輸出,不能再返回到上一行。為了獲得本文要求的圖形就必須在一行中一次輸出兩個(gè)“*”。
為了同時(shí)得到余弦函數(shù)cos(x)圖形在一行上的兩個(gè)點(diǎn),考慮利用cos(x)的左右對(duì)稱性。將屏幕的行方向定義為x,列方向定義為y,則0~180度的圖形與180~360度的圖形是左右對(duì)稱的,若定義圖形的總寬度為62列,計(jì)算出x行0~180度時(shí)y點(diǎn)的坐標(biāo)m,那么在同一行與之對(duì)稱的180~360度的y點(diǎn)的坐標(biāo)就 應(yīng)為62-m。程序中利用反余弦函數(shù)acos計(jì)算坐標(biāo)(x,y)的對(duì)應(yīng)關(guān)系。
使用這種方法編出的程序短小精煉,體現(xiàn)了一定的技巧。
*程序說明與注釋
#include
#include
void main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1) /*y為列方向,值從1到-1,步長(zhǎng)為0.1*/
{
m=acos(y)*10; /*計(jì)算出y對(duì)應(yīng)的弧度m,乘以10為圖形放大倍數(shù)*/
for(x=1;x printf("*"); /*控制打印左側(cè)的 * 號(hào)*/
for(;x<62-m;x++)printf(" ");
printf("*\n"); /*控制打印同一行中對(duì)稱的右側(cè)*號(hào)*/
}
}
在屏幕上用“*”顯示0~360度的余弦函數(shù)cos(x)曲線
*問題分析與算法設(shè)計(jì)
如果在程序中使用數(shù)組,這個(gè)問題十分簡(jiǎn)單。但若規(guī)定不能使用數(shù)組,問題就變得不容易了。
關(guān)鍵在于余弦曲線在0~360度的區(qū)間內(nèi),一行中要顯示兩個(gè)點(diǎn),而對(duì)一般的顯示器來說,只能按行輸出,即:輸出第一行信息后,只能向下一行輸出,不能再返回到上一行。為了獲得本文要求的圖形就必須在一行中一次輸出兩個(gè)“*”。
為了同時(shí)得到余弦函數(shù)cos(x)圖形在一行上的兩個(gè)點(diǎn),考慮利用cos(x)的左右對(duì)稱性。將屏幕的行方向定義為x,列方向定義為y,則0~180度的圖形與180~360度的圖形是左右對(duì)稱的,若定義圖形的總寬度為62列,計(jì)算出x行0~180度時(shí)y點(diǎn)的坐標(biāo)m,那么在同一行與之對(duì)稱的180~360度的y點(diǎn)的坐標(biāo)就 應(yīng)為62-m。程序中利用反余弦函數(shù)acos計(jì)算坐標(biāo)(x,y)的對(duì)應(yīng)關(guān)系。
使用這種方法編出的程序短小精煉,體現(xiàn)了一定的技巧。
*程序說明與注釋
#include
#include
void main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1) /*y為列方向,值從1到-1,步長(zhǎng)為0.1*/
{
m=acos(y)*10; /*計(jì)算出y對(duì)應(yīng)的弧度m,乘以10為圖形放大倍數(shù)*/
for(x=1;x
for(;x<62-m;x++)printf(" ");
printf("*\n"); /*控制打印同一行中對(duì)稱的右側(cè)*號(hào)*/
}
}