解题思路:(提交了九次必须得mark一下啊,思路没问题就是太多细节导致wrong,坑死我了@_@)
思路:高中物理如果还没还给老师的话,很容易联想到运动的分解,我们可以把台球的运动分解为水平和竖直方向,然后分别处理(由于水平与竖直解法类同,我们只讨论水平方向)。
由题意可得:水平方向总路程为 v*s*cos(a*M_PI/180), 用初始坐标加路程得到一个位置,该位置明显越界,不过程序猿怎么能慌呢,我们把越界的部分沿边界对折,折叠之后如果还越界,那就一直折下去吧,哈哈。如下图:
注意事项:
1、看到别人说π的精度问题,我直接include math.h库,然后里面有一个M_PI,可以直接当π用。
2、数据类型最好用double。
3、注意到四舍五入,x = (int)(x*100+0.5)/100.0;
y = (int)(y*100+0.5)/100.0; 此处一定要除以100.0 , 不要100!!
参考代码:只贴一部分吧,总感觉太多让人心烦。
ys=v*s*sin(a*M_PI/180);//y方向的总路程 y += ys; while(y<R || y>W-R)//越界判断 { if(y<R) { y = 2*R-y; } else { y = 2*(W-R)-y; } } xs=v*s*cos(a*M_PI/180);//x方向总路程 x += xs; while(x<R || x>L-R)//越界判断 { if(x<R) { x = 2*R-x; } else { x = 2*(L-R)-x; } } x = (int)(x*100+0.5)/100.0;//四舍五入 y = (int)(y*100+0.5)/100.0; printf("%.2f %.2f\n",x,y); }
0.0分
9 人评分
IP判断 (C语言描述,蓝桥杯)浏览:1118 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:569 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1496 |
数列排序 (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:841 |
C二级辅导-公约公倍 (C语言代码)浏览:1325 |
C语言训练-百钱百鸡问题 (C语言代码)浏览:542 |
求圆的面积 (C++代码)浮点数有误差!!!浏览:724 |
1063题 初学者,求帮忙看下,不知道哪错了浏览:239 |