题目:有一辆车以初速度u做匀加速直线运动,加速度是a,用 t 时间走了s位移,这时速度是v。
现在已知其中的3搁置,求另外两个。
分析:物理题。s = u*t + 0.5*a*t^2;v = u + a*t;v^2 - u^2 = 2*a*s;利用这三个式子求解即可。
说明:都快忘光了╮(╯▽╰)╭。
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
double u, v, a, t, s;
int main()
{
int n, T = 1;
while ( ~scanf("%d",&n) && n ) {
printf("Case %d:",T ++);
if (n == 1) {
scanf("%lf%lf%lf",&u,&v,&t);
a = (v - u) / t;
s = u * t + 0.5 * a * t * t;
printf(" %.3lf %.3lf\n",s,a);
} else if (n == 2) {
scanf("%lf%lf%lf",&u,&v,&a);
t = (v - u) / a;
s = u * t + 0.5 * a * t * t;
printf(" %.3lf %.3lf\n",s,t);
} else if (n == 3) {
scanf("%lf%lf%lf",&u,&a,&s);
v = sqrt(u * u + 2 * a * s);
t = (v - u) / a;
printf(" %.3lf %.3lf\n",v,t);
} else if (n == 4) {
scanf("%lf%lf%lf",&v,&a,&s);
u = sqrt(v * v - 2 * a * s);
t = (v - u) / a;
printf(" %.3lf %.3lf\n",u,t);
}
}
return 0;
}