查看全部128種考試
1
2
3
4
5
6
7
8
9
10
ak47  
【字體: 經(jīng)典的C程序案例
經(jīng)典的C程序案例
djks.exam8.com 來(lái)源:考試吧(Exam8.com) 更新:2004-8-16 22:43:00 計(jì)算機(jī)等級(jí)考試 考試論壇

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ì)一般的顯示器來(lái)說(shuō),只能按行輸出,即:輸出第一行信息后,只能向下一行輸出,不能再返回到上一行。為了獲得本文要求的圖形就必須在一行中一次輸出兩個(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)了一定的技巧。

*程序說(shuō)明與注釋

#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)*/

}

}

2.繪制余弦曲線和直線

在屏幕上顯示0~360度的cos(x)曲線與直線f(x)=45*(y-1)+31的迭加圖形。其中cos(x)圖形用“*”表示,f(x)用“+”表示,在兩個(gè)圖形相交的點(diǎn)上則用f(x)圖形的符號(hào)。

*問題分析與算法設(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");

}

}

3.繪制圓

在屏幕上用“*”畫一個(gè)空心的圓

*問題分析與算法設(shè)計(jì)

打印圓可利用圖形的左右對(duì)稱性。根據(jù)圓的方程:

R*R=X*X+Y*Y

可以算出圓上每一點(diǎn)行和列的對(duì)應(yīng)關(guān)系。

*程序說(shuō)明與注釋

#include

#include

void main()

{

double y;

int x,m;

for(y=10;y>=-10;y--)

{

m=2.5*sqrt(100-y*y); /*計(jì)算行y對(duì)應(yīng)的列坐標(biāo)m,2.5是屏幕縱橫比調(diào)節(jié)系數(shù)因?yàn)槠聊坏?

行距大于列距,不進(jìn)行調(diào)節(jié)顯示出來(lái)的將是橢圓*/

for(x=1;x<30-m;x++) printf(" "); /*圖形左側(cè)空白控制*/

printf("*"); /*圓的左側(cè)*/

for(;x<30+m;x++) printf(" "); /*圖形的空心部分控制*/

printf("*\n"); /*圓的右側(cè)*/

}

}

[1] [2] [3] 下一頁(yè)

轉(zhuǎn)帖于:計(jì)算機(jī)等級(jí)考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評(píng)論
昵 稱: *  評(píng) 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評(píng)論)查看全部評(píng)論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) All Rights Reserved    
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營(yíng)許可證號(hào):京ICP060677