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&#61;0;t<&#61;640;t&#43;&#61;0.005)
{
r&#61;255.0?A*cos(w*t&#43;c/l 80.0*PI);
putpixel(t&#43; 100,r,4)&#xff1b;
/*涯指定位置画一像索。void far putpixel (int x, int y, int pixelcolor)&#xff1b; 其中(x,y)是坐标&#xff0c;pixelcolor是像素禹颜色*/
}
}
void zuobiao(float h)
{
line(100,h,100,h&#43;140);/*画 y 轴*/
line(0,h&#43;70,640,h&#43;70);/*画 x 轴*/
outtextxy(105,h&#43;80,n0wn);
outtextxy(620,h&#43;80,"tn);
oimextxy(80,40「Tl“)&#xff1b; /*用于在指定位置上显示一字符串*/ line(640,h&#43;70,620,h&#43;65); /*在指定两点I田i线&#xff0c;为x轴箭头*/ line(640,h&#43;70,620,h&#43;75);
line(100,h-5,105,h&#43;15); /*imi y 轴箭头*/ line(100,h-5,95,h&#43;15);
}
void main()
{
float A,w,c;
int gdriver,gmode;
gdrivei?二 DETECT;
initgraph(&gdriver,&gmode,"C:\\TC20\\BGI”)&#xff1b; cleardevice();
outtextxy(0,5,"please input A,w,c”)&#xff1b;
gotoxy(45,l