解题思路:(提交了九次必须得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分
8 人评分
C语言训练-角谷猜想 (C语言代码)浏览:1726 |
printf基础练习2 (C语言代码)浏览:792 |
printf基础练习2 (有点不明白)浏览:849 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:515 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5239 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:610 |
字符逆序 (C语言代码)浏览:463 |
杨辉三角 (C语言代码)浏览:485 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:553 |
printf基础练习2 (C语言代码)浏览:515 |