c语言程序设计抛物线.docx

上传人:b****4 文档编号:5526982 上传时间:2022-12-18 格式:DOCX 页数:12 大小:100.97KB
下载 相关 举报
c语言程序设计抛物线.docx_第1页
第1页 / 共12页
c语言程序设计抛物线.docx_第2页
第2页 / 共12页
c语言程序设计抛物线.docx_第3页
第3页 / 共12页
c语言程序设计抛物线.docx_第4页
第4页 / 共12页
c语言程序设计抛物线.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

c语言程序设计抛物线.docx

《c语言程序设计抛物线.docx》由会员分享,可在线阅读,更多相关《c语言程序设计抛物线.docx(12页珍藏版)》请在冰豆网上搜索。

c语言程序设计抛物线.docx

c语言程序设计抛物线

 

《程序设计基础(C语言)》

课程设计说明书

 

学院:

班级:

学号:

姓名:

教师:

日期:

2012年6月18日

课程设计要求:

1.本课程设计作为《程序设计基础(C语言)》的期末考核,占该课程总成绩的70%。

2.本课程设计的题目可以由老师指定或学生自选。

3.知识点要求包括:

(1)文件常用操作(打开,读/写数据,关闭等);

(2)选择结构;

(3)循环结构;

(4)自定义函数;

(5)数组的使用;

(6)指针的定义与引用;

(7)结构体类型的定义与使用

注意:

需要在源代码相应的位置注释出以上知识点;

4.课程设计的主体包括题目名称、算法分析、流程设计、代码设计及运行结果。

C设计抛物线计算器

算法分析:

抛物线计算器程序的开头是文件包含的预处理命令。

语言中,预处理命令都是以“#”开头,#include表示包含某个头文件。

stdio.h是标准输入输出头文件。

(#include

#include

#include)。

然后程序对所做图形的大小模型分辨率进行了设置,将其设置成了合适的图形模式。

(initgraph(640,480);)

再依次输入抛物线的四个参数(1初始高度,2初始角度,3初始速度,4重力加速度),并且分别对四个参数的要求以及数值范围进行了规范。

然后程序中调用函数公式对其他参数进行计算并且将其输出。

再对图形的背景颜色以及线条颜色进行了设置。

之后程序利用sprintf命令将输出的数据添加到字符串中。

sprintf%[指定参数][标识符][宽度][.精度]指示符。

1.处理字符方向。

负号时表示从后向前处理。

2.填空字元。

0的话表示空格填0;空格是内定值,表示空格就放着。

3.字符总宽度。

为最小宽度。

4.精确度。

指在小数点后的浮点数位数。

最后程序运行正确,数据正确时,将文件保存到指定位置,打开读取保存的函数文件。

流程设计:

操作开始

调整图像模式

输入参数h,v1,a,g

h>0

v1>0

Na>0

g>0

Y

调用函数公式计算其他参数,输出其他参数

保存函数,读取函数N

Y

操作结束

代码设计:

1.开始部分

#include

#include

#include

#definePI3.1415926

doublegeth_t(doubleh,doublev1,doubleA,doubleg,doublet);

intmain(void)

{

2.图像设置

initgraph(640,480);

3.输入参数计算参数:

doubleh,v1,a,g;

chars[10];

intflag=0;

do

{

InputBox(s,10,"请输入初始高度");

sscanf(s,"%lf",&h);

if(h<=0)

flag=0;

else

flag=1;

}while(!

flag);

flag=0;

do

{

InputBox(s,10,"请输入出始速度");

sscanf(s,"%lf",&v1);

if(v1<=0)

flag=0;

else

flag=1;

}while(!

flag);

flag=0;

do

{

InputBox(s,10,"请输入初始角度");

sscanf(s,"%lf",&a);

if(a>=-90)

{

if(a<=90)

flag=1;

else

flag=0;

}

else

flag=0;

}while(!

flag);

flag=0;

do

{

InputBox(s,10,"请输入重力加速度");

sscanf(s,"%lf",&g);

if(g<=0)

flag=0;

else

flag=1;

}while(!

flag);

doubleA=(a*PI)/180;

doublev2=sqrt(v1*v1+2*g*h);

doublecosB=(v1*cos(A))/v2;

doublesinB=sqrt(1-cosB*cosB);

doubleB=acos(cosB);

doubleT=(v1*sin(A)+v2*sinB)/g;

doubleS=v1*cos(A)*T;

doubleb=-B*180/PI;

doubleh_max;

doublev_max;

if(a<=0)

{

h_max=h;

v_max=v1;

}

else

{

h_max=h+(v1*v1*sin(A)*sin(A))/g;

v_max=v1*sin(A);

}

4.画出图像嵌入数据:

doubledet_s=S/400.0;

doubledet_h=h_max/400.0;

doubledet;

if(det_s>=det_h)

det=det_s;

else

det=det_h;

ints_n=(int)(S/det)+1;

setbkcolor(blue);

cleardevice();

setcolor(green);

line(20,440,460,440);

line(40,30,40,460);

intpoints[]={40,30,35,40,45,40};

fillpoly(3,points);

intpoints2[]={460,440,450,435,450,445};

fillpoly(3,points2);

setcolor(red);

outtextxy(20,445,'0');

outtextxy(40+s_n,445,'S');

outtextxy(20,440-(int)(h/det),'H');

moverel(40,440-(int)(h/det));

intdx=40;

intdy=dx*tan(A);

linerel(dx,-dy);

setcolor(WHITE);

charstr[50];

sprintf(str,"初始高度为%.2f米",h);

outtextxy(440,50,str);

sprintf(str,"初速度为%.2f米/秒",v1);

outtextxy(440,70,str);

sprintf(str,"初始角度为%.2f度",a);

outtextxy(440,90,str);

sprintf(str,"重力加速度为%.2f米/秒^2",g);

outtextxy(440,110,str);

sprintf(str,"落地时间为%.2f秒",T);

outtextxy(440,130,str);

sprintf(str,"落地时速度为%.2f米/秒",v2);

outtextxy(440,150,str);

sprintf(str,"落地角为%.2f度",b);

outtextxy(440,170,str);

sprintf(str,"落地点水平距离为%.2f米",S);

outtextxy(440,190,str);

sprintf(str,"最高点速度为%.2f米/秒",v_max);

outtextxy(440,210,str);

sprintf(str,"最高点垂直距离为%.2f米",h_max);

outtextxy(440,230,str);

setcolor(YELLOW);

inti;

moveto(40,440-(int)(h/det));

for(i=0;i

{

doublet=(double)(T/s_n)*i;

doubleh_t=geth_t(h,v1,A,g,t);

inth_n=(int)(h_t/det);

intx=40+i;

inty=440-h_n;

lineto(x,y);

}

lineto(40+s_n,440);

charp[]="保存";

outtextxy(490,400,p);

charr[]="打开";

outtextxy(490,420,r);

 

MOUSEMSGm;

while(true)

{

m=GetMouseMsg();

switch(m.uMsg)

{

caseWM_LBUTTONDOWN:

if(m.x>490&&m.x<510&&m.y>400&&m.y<420)

{

chars[50];

InputBox(s,10,"请输入要保存的文件名");

saveimage("s");

}

if(m.x>490&&m.x<510&&m.y>420&&m.y<440)

{

chars[50];

InputBox(s,10,"请输入要读取的文件名");

loadimage(NULL,"s");

}

break;

}

}

 

getchar();

closegraph();

return0;

}

doublegeth_t(doubleh,doublev1,doubleA,doubleg,doublet)

{

return(h+v1*t*sin(A)-0.5*g*t*t);

}

 

运行结果:

 

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

当前位置:首页 > 自然科学 > 物理

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

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