C语言程序设计报告
《简谐振动实验的模拟》
课程设计报告
题目 简谐振动实验的模拟
学号姓名XX
年级专业2015级电子信息工程
指导教师仝
完成日期 2016 年 6 月 12日
安徽师范大学物理与电子信息学院
College of Physics and Electronic Information, Anhui Normal University
一、问题描述
二、基本要求
三、系统分析和过程
四、流程图
五、源程序代码
六、小结及收获体会
七、评定意见
:问题描述
本程序设计是一个将物理问题与C语言程序设计结合的程序设计 问题。能够实现用用C语言编程让计算机模拟简谐振动的实验,可 以改变振动函数的各参数,绘出不同振幅、频率和相位的简谐振动图 形。以及完成两简谐振动的合成。
二:基本要求
1)能够实现简谐振动的模拟;
2)简谐振动的振幅、频率以及和位由键盘输入;
3)能够实现动画效果。
三、系统分析和过程
简谐振动的函数是y=A*cos(w*x+c),是一条余弦函数。
振幅、频率和相位由键盘输入,最重要的是要使用到画图函数, 并且实现动画效果。整个程序包括头文件,函数及变量声明,main 主函数,菜单页面函数,画图函数,输入处理函数和图形初始化两数。 先用一个开始页面的函数,说明该程序的基本功能, 再进入菜单页面,从屮可以选择操作(输入处理函数选项、画图选项、 退出选项),到其他函数。在输入处理函数中输入振幅、频率、相位, 在画图函数中进行画图,能够实现动画效果,退出选项退出运行。
难点是画图函数中画线,画图框,和实现动态效果,要运用到专 门的函数,要了解他们的使用方法,作用,还要用到循环,要求能够 在屏幕屮显示出同方向传播的两列简谐波和它们的合成波,因此实现 此功能必须引用图形函数,和其中很多功能的应用。
在屏幕中我们要实现三列波动态的演示效果,并能够在动态图 形中观察三波的关系。因此在这里我们要引用时间函数来实现此
功能。
本实验中我们调用了以下库函数:
ftinclude
ttinclude
#include
ttinclude
ttinclude
ftinclude〈
ftinclude
〈time. h>
为实现功能写了以下2个函数:
void quxian();
void quxian();
/*图形绘制界面*/
void zuobiao();
void zuobiao();
/*坐标轴绘制*/
四、流程图
程序开始
进入菜单页而
用丿'"输入A, w, c
进入图形模式,绘 制图形
v
退出图形模式
退出程序
五:程序清单
#include
#include
#include
#include
#include
#define PI 3.14
void quxian(float A,float w, fl oat c)
{
float t,r;
for(t=0;t<=640;t+=0.005)
{
r=255.0?A*cos(w*t+c/l 80.0*PI);
putpixel(t+ 100,r,4);
/*涯指定位置画一像索。void far putpixel (int x, int y, int pixelcolor); 其中(x,y)是坐标,pixelcolor是像素禹颜色*/
}
}
void zuobiao(float h)
{
line(100,h,100,h+140);/*画 y 轴*/
line(0,h+70,640,h+70);/*画 x 轴*/
outtextxy(105,h+80,n0wn);
outtextxy(620,h+80,"tn);
oimextxy(80,40「Tl“); /*用于在指定位置上显示一字符串*/ line(640,h+70,620,h+65); /*在指定两点I田i线,为x轴箭头*/ line(640,h+70,620,h+75);
line(100,h-5,105,h+15); /*imi y 轴箭头*/ line(100,h-5,95,h+15);
}
void main()
{
float A,w,c;
int gdriver,gmode;
gdrivei?二 DETECT;
initgraph(&gdriver,&gmode,"C:\\TC20\\BGI”); cleardevice();
outtextxy(0,5,"please input A,w,c”);
gotoxy(45,l