C语言课程设计振动波的合成原理.docx

上传人:b****6 文档编号:7980851 上传时间:2023-01-27 格式:DOCX 页数:13 大小:39.28KB
下载 相关 举报
C语言课程设计振动波的合成原理.docx_第1页
第1页 / 共13页
C语言课程设计振动波的合成原理.docx_第2页
第2页 / 共13页
C语言课程设计振动波的合成原理.docx_第3页
第3页 / 共13页
C语言课程设计振动波的合成原理.docx_第4页
第4页 / 共13页
C语言课程设计振动波的合成原理.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言课程设计振动波的合成原理.docx

《C语言课程设计振动波的合成原理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计振动波的合成原理.docx(13页珍藏版)》请在冰豆网上搜索。

C语言课程设计振动波的合成原理.docx

C语言课程设计振动波的合成原理

C语言课程设计••振动波的合成原理

课程设计报告

振动合成原理的模拟

同组人员

年级专业2009级电子信息工程

指导教师

完成日期2°1°年6月27日

C语言课程设计-振动波的合成原理

物理与电子信息学院课程设计评定意见

主要内容包括:

设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。

师评语

 

C语言课程设计-振动波的合成原理

成绩:

签名:

年月日

设计过程:

1)选题

2)分析设计

3)编程调试

4)撰写实验报告

程序设计模板与流程:

模板:

#include“stdio.h"

#include,4std1ib»h,r

ui()

#includectgraphics。

h”

#inc1ude"conio.h"

tial()1

#inc1ude"std1ib.h"

#inc1udeath.h”

input()]

井ineludeh”

voidInItian();

流程:

主函数调用we1comeg

图形初始化[ini

输入两图形的参数[user

合成处理图形[synth

esize()]

voiduserinputQ;

 

voidsynthesize。

;voidwelcomegui();intmainQ

{

}

1.问题描述:

在程序中,要输入振动参数,实现动态效果及合成图像的显示。

2.基本要求:

此程序用来实现简谐振动的合成,在程序中,要输入两个分简谐振动的振幅,频率和初位相,还要实现动态效果。

其中,动态效果的实现是此程序的重点。

在程序中,必须用到一些绘图函数。

3.系统分析和数据:

此程序主要是实现简谐振动的合成,其中,开始利用主函数调用一个函数,对操作进行选择;然后绘出三坐标轴,使图形出现的方位确定;接着,输入两分振动的参数;最后合成三图形。

四。

程序的说明:

此程序是为了实现简谐振动的合成。

在程序中,开始利用主函数调

C语言课程设计-振动波的合成原理

用welcomegui();函数,对要进行的操作进行选择。

然后对图形坐标及图形显示在屏幕上的位置进行定位,其中运用了sprintf();和outtextxy();函数,接着输入Y1和Y2的参数,并再次调用函数,对操作进行选择,最后,合成处理函数,同步显示来年各个分振动和一个合振动。

5.O主要函数的说明:

sprintf();:

格式化输岀函数或图形,sprIntf()给出的第一个参数string,然后再调用outtextxy()将申里的字符显示在屏幕上通常在绘图方式下输出数字,可调用sprintf()将所输出的格式送到第一个参数,然后显示输出。

ou11extxv();:

在指定位置显示一字符串。

voidouttextxy(intx3Inty3char*te

xtstiiiig)

set1inestyle();:

设置当前画线宽度和类型.

setf1DstyleQ;:

设置填充模式和颜色

bar();:

画一个两维条形图。

voidbar(Intleft,inttop,intrightjnt

bottom)

delayf);:

将程序的执行暂停一段时间〔毫秒)。

1ineto();:

直线的绘制。

cleardevice(>;:

清屏。

moveto();:

将CP移到(x,y)0

源程序代码与调试

用前在TC目录下输入以下两个命令aBGIOBJEGAVGAa和

TLIBLIBGRA.PHICS.LIE+EGAVG/U

代码如下:

#include"stdio.h"

#inelude"stdlib.h”

#Includengraphics.\\

#iDelude"conio.hp

#include"stdlib。

hr

幷include"math・h"

ffinc1ude”time。

h”

#defineGAIN10/*増益

 

voidinitial(void);

/伙图形初始化*/

voiduserinput〔void):

/*输入处理函数*/

 

voidsynthesize(void);

合成处理过程*/

voidweIcomegui(void);

/*开始页面*/

floatal=1,wl=hf1=0;

/*两振动的参数*/

floata2=1,w2=Uf2=0;

intmain(void)

{

we1comeguj():

return0;

}

voldinitial(void)

{

chars[50];

setbkcolor(BLACK);设置背景色为黑色*/

$etlinestyle(SOLID_LINE,0,THICK_WIDTH>;/氓设置

直线的风格,粗线玄/

cleardev1ce():

/吠清屏*/

/*画最外围的边框玄/

line<10,10,629,10);

1ine(629,10,629,469):

line(6299469,10,469〉:

 

line(10,469,10,10);

/*图形区功画区初始化刃

line(40,30,450,30):

1ine(450,30,450,400);

1ine(450,400,40,400);

1in已〈40,400,40,30);

$Printf(s,"SYNTHESIZEDBELOW:

;/*三个坐标轴的说明

outtextxy(70,40?

s);

sprintffs,,FTHEXI;”):

outtextxy(70,160,s);

sprintf〔s,"THEX2:

");

□uttextxy(70,280,s)•

/吹函数XI信息区初始化*/

1ine(470,30,609,30);

line(609,30,609,130);

line(609,130,470,130);

line(470,130,470,30);

settextsty1e(DEFAULT_F0NT,HORIZ_DIR,1);

sprintf(s,"Dynamic");

outtextxy(480,40,s);

sprintf(s711Information7?

)-

outtextxy(480,50?

s);

$printf

");

outtextxy(480,60,s);

sprintf(s,pAl=%・2f.V/1=%o2frFa1,wl);outtextxy(480,70,s);

sprintf(s,"f1=%.2f",fl〉;

outtextxy(480,80?

s);

函数X2信息区域初始化*/

line(470,180,609,180);

1ine(609,180,609,280〉;

line(609,280,470,280>;

line<470,280,470,180>;

sprint.f(s・卩Dynamic");

outtextxyC480,190,s);

sprintf(s?

pInformation");

outtextxy(480,200,s);

sprintf(s,rofX2:

v):

outtextxy(480,210

$printf(&,”A2=%.2f,腔啤.2『”,a2,w2):

outtextxy(480,220,s);

sprintf〈$,"f2=<2f”,f2);

outtextxy〈480,230,s);

合成图形信恳区初始化*/

line<470,300,609,300):

1ine(609,300,609,400〉;

1ine(609,400,470,400);

line(470,400,470,300);

sprintf

outtextxy(480,310,s);

sprintf®”Information*):

outtextxy(480,320,s);

sprintf(s,"ofSX:

n)-

outtextxy〈480,330,s)-

设置直

setIinestyle(S0LID_LINE?

0,N0RMJVIDTH>;接风格为细线*/

合成函数的坐标轴灯

line(60,90,430,90):

line〈6D,40,60,140);

line(425,85,430,90);/*画坐标箭头*/

1ine(430,90,425,25).

Iine(55,45,60,40);

line(60,40,65,45〉;

sprintf〈5,"SX"〉;/*坐标名称吹/

outte^txy〈43,55,s)-

sprintf〈s,”t”〉;

outt.extxy(425,105,s):

sprintf(s,"0"〉;/*坐标原点、*/

outxy(50,90,$);

/*X1的坐标轴权

line(60,210,430,210);

1ine(60,160,60,260):

line〔425,205,43D,210);画坐标箭头*/

1ine(430,210,425,215);

1ine(55,165,60,160);

line(60,160,65,165〉;

sprintf($,wXI,r);坐标名称

outtextxy(43,175,s);

sprintf(s,"t"〉:

outte

sprintf

outtextxy(50210,s):

/*X2的坐标轴*丿

1ine(60,330,430,330);line(60,280,60,380);

line<425,325,430,330〉;画坐标箭头*/

line(430,330,425,335);

line(55,285,60,280);

line(60,280,65,285);

sprintf(SgrX2"):

坐标名称吹/

outtexy(43,295,s);

sprintf(s,"t");

outtextxy(425,345,s)-

sprintf(s,'■0;/*坐标原点吠/

outtextxy(50.330,s);

void

userinput(void)

/*输入X]的参数*丿

pr1ntf〈”XI=A1*COS(W1*t十fl〉”〉:

printfPlea$einputtheparametersforX1")

printfAl=”);

seanf(l,%f",&al):

prjntf(W1=O:

seanfC%fr,&wl);

printff1=");

seanf(lt%r,&fl);

rsforX2V):

comeGUI"〉-

/來输入X2的参数去/

printfCX2=A2*COS(W2*t+f2)”〉;

printf

printf〔”A2=”〉;

scanf〔"%f”,&a2〉;

printf(”W2=”);

scanf(ft%f",&w2〉;

printf<"f2二"〉;

scant%f”9&f2);

printf〔”PressanykeytofetumtotheWegetch<)./木等待任意键*/

v?

elcomegui<);

oidsynthesize(void)合成处理函数权

Inti=0;

floaty1,y2:

floatsy;chars[40];intgdriver,gmode;

gdriver=DETECT;

registerbgjdriver(EGAVGA_driver);

initgraph(&gdriver,&gmo己e,r'*);/*注意

此处的第三个参数吠/

initial();/太初始化图形古/

setfi11style(SOLIDFlLL,BLACK〉;

sprintf(s,pPressanykeytobegin!

");

outtextxy(5D,420,s):

wl=wl/10•

w2=w2/10;

y1-al*cos(vz1*i+fl)•

y2=a2*cos(v/2*i+f2):

yL=yl法GAIN;

y2=y2*GAIN;

sy=yi+y2;

getch():

/*任意键开始*/

/*开始画线*/

while(i<360)

{

/古画XI的线吠/

moveto(60+i-1,y1+210);

y1二GAINal*cos(wl*i+fl);

lineto(60+1,71+210):

/*X1的动态信息显伙/

bar(480,90,600,110);

sprintF($,”XI=-%f”,y1/GAIN);

outtexLxy(480,90?

s);

sprintf(s,"tl=%d",i);

outtextxy(480<100,$):

/*BX2的线*/

moveto(60+i—1,y2+330);

y2=GAIN*a2*cos(w2*i+f2);

lineto(60+i,y2+330>;

/*X2的动态信息显示*/

bar(480,240,600,260);

sprintf(s,”%2=—汀2/GAIN);

outtextxy(4B0?

240,s);

sprintf(s,,Ft2=%d「,i):

outtextxy<480,250,s):

/*画合成曲线水/

moveto(60+i-l,sy+90);

sy=yl+y2;

1Ineto(60+i,sy+90);

/次合成曲线动态信恳显示椰

bar<480,340,600,360):

sprintf(s,”SX=—%,yl/GAIN+y2/GAIIC:

outte^txy(480,340,s);

sprintf(s,"=%d",i);

outtex.txy(480,350,s);

delay(2000):

Q为看洁过程.中间有延迟*/

}

bar(50.410,250,440);/*此句将前的任意键开始的说明擦除*/

spriritf〈s?

"F匚e5sanykeyto匚eturritothewelcomeGUI!

");

outtextxy(50,420,$);

getch0;J*任意键返回开始的页面权

closegraph();

welcomegui()-

}

yoidwelcomegui(void)

{

intsei;

systemCcls"〉;调用DOS命令清屏咲/

prlntf(“We1cmetousethisprograme^^v);

printf(11Pleaseselect-p)-

printfC0.Input”);

printf

pc1ntfC2.Exjt,r):

scanf(,”%d",&sel〉;

switch(sei)

{

case0:

userinput〈);break;

case1:

synthesize();break;

case2:

exit(0);

default-printf("ERRORINPUT!

Pleaseinputagain:

”〉;

getch();

welcomegui();

}

}

g#include(graphicSoh>

#include^#inc1ude

#include(math.h)

main0的{

intgraphdrv=VGA;

intgraplirnode=VGAHI;

int尸150,t=0,x-200,u=20?

n=1000,y,r=4,i;

f1oat.w=0.05if=0.8;ainitgraph(&graphdrv&

graphmode,tc\\bgi")for(t=0;t<=1D0;t++)

{△『or

cos(W*t+f)+250;

c1eardvice();

line

1iiie(x+10*i,u,心10*i+10,u—10)

line

U,X,y);

1ine

◎circ1e〈x,y,r—1);

circle(xy.r一2);

circle(xy,r)於}

while(!

kbhit<))-

c1osegraph<):

.调试:

一|口|x[

一.输入数据界面:

cTG:

\IVM0C2\lllEXf

Welcmetousethispi*og>»ane

•2・

405A405

-O运行界面:

六。

小结及收获和体会:

这次课程设计,是对一学期来C语言学习成果的检验,但由于学的知识有限,不能只靠书本知识来实现简谐振动的合成,因此,需要借阅资料和网络资源.在编程与调试过程中,遇到过很多不懂的知识,有时难免不知所措,才知道,书到用时方恨少。

明白,对知识的学习,应该认真钻研,平时多浏览学习编程方面的书•这次调试虽然以顺利通过,但其中很多知识都是参考资料,然后才弄懂的。

这次课程设计中,学到了很多,不仅在编程方面,了解了很多函数,也感觉到编程是一件很有意义的事,以后,一定要多钻研这方面的书,可以自己单独的编出一些程序.

九、参考书目

[1]谭浩强,C程序设计教程,清华大学出版社,2007年

[2]赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学岀

版社,2003年谭浩强编著,《C程序设计》,清华大学出版社,1991年

[3」GaryJ。

Bronson,AFirstBo0kofANSIC(FourthEdi11on\PublishingHouseofElectronicsIndustry,2006.

[4]AlKe11ey,IraPohl,ABookonC:

Program

ininginC(FourthEdition),ChinaMachinePress,2004。

[5]BrianW>Kemighan.DennisM・Ritchie,TheCProgrammingLanguage,ChinaMachinePress?

2006.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1