解题思路:
首先用高中物理知识,把运动看成两个运动,一个是水平一个是竖直,
我就分析水平的吧,竖直的复制粘贴水平的。
注意事项:如果你真想弄懂就点一点看,不能着急
参考代码:
#include<stdio.h>
#include<math.h>
#define pi 3.1415926535897932
#define vx (v*cos(a*pi/180.0))
#define vy (v*sin(a*pi/180.0))
int main ()
{
int j=0,k=0,n=1;
double i=0;
double X[50],Y[50],l,w,x,y,r,a,v,s;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&l,&w,&x,&y,&r,&a,&v,&s);
while(l!=0||w!=0||x!=0||y!=0||r!=0||a!=0||v!=0||s!=0)
{
if((int)vx<0){
i=-vx*s;
i+=l-x;
}
else{
i=vx*s;
i+=x;
}
n=1;
while(i>(l-2*r)){
n++;
i-=(l-r*2);
}
if((int)vx>=0){
if(n%2==0)
X[j]=l-i;
else
X[j]=i;
}
else
{
if(n%2==0)
X[j]=i;
else
X[j]=l-i;
}
//竖直向下
if((int)vy<0){
i=-vy*s;
i+=w-y;
}
else{
i=vy*s;
i+=y;
}
n=1;
while(i>(w-2*r)){
n++;
i-=(w-r*2);
}
if((int)vy>=0){
if(n%2==0)
Y[j++]=w-i;
else
Y[j++]=i;
}
else
{
if(n%2==0)
Y[j++]=i;
else
Y[j++]=w-i;
}
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&l,&w,&x,&y,&r,&a,&v,&s);
}
for(k=0;k<j;k++)
printf("%.2f %.2f\n",X[k],Y[k]);
}
0.0分
1 人评分
C语言训练-数字母 (C语言代码)浏览:649 |
剪刀石头布 (C语言代码)浏览:1755 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:510 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:530 |
愚蠢的摄影师 (C++代码)浏览:938 |
1124题解浏览:595 |
核桃的数量 (C语言代码)浏览:872 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:892 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:646 |