一、平原作战
我军在平原地带与敌人遭遇,我炮兵瞄准敌人开炮射击。
![](https://img-blog.csdnimg.cn/img_convert/31d3ff85de004d294fd34e0b3cc0735c.jpeg)
请编写程序,输入炮弹的初速度 v0 和射程 x,输出炮弹的射角 α。
输入格式
初速度 v (米/秒)
射程 x (米)
输出格式
射角 α (度、分和秒数)
要求:射角不小于45度。秒数输出2位小数,末尾4舍5入。
输入样例
760.8
48631.53
输出样例
62 17 14.81
注:重力加速度 g = 9.8,圆周率 π = 3.1415926535897932384626...
完整的代码如下:
#include<stdio.h>
#include<math.h>
#define g 9.8
#define pi 3.1415926535897932384626
int main()
{
double v,x;
scanf("%lf%lf",&v,&x);
double ret=(g*x)/(v*v);
double rad=asin(ret);//利用反三角函数求出弧度
rad=rad/2;//单个弧度
double du=rad*180/pi;//弧度转化为角度
du=90-du;//注意题目要求射角不小于45度
int angle=(int)du;
int minute=(int)((du-angle)*60);
double second=((du-angle)*60-minute)*60;
printf("%d %d %.2lf\n",angle,minute,second);
return 0;
}
- 有关水平位移的推导公式(斜抛运动)
假设初始速度为V,水平位移X,总时间T
竖直方向的速度:
水平方向的速度:
竖直向上运动的时间=竖直向下运动的时间=
全程花费的时间:
水平位移的推导:=
=
=
=ret
- 弧度转化为度·分·秒
度:弧度*180/pi
分:(度的小数部分×60)的整数部分
秒:((度的小数部分×60)-分)*60
- 二、烟囱的高度
已知人离烟囱的距离为 a,人的眼睛离地高度为 b,人看烟囱顶时的仰角为 θ,求烟囱的高度 h。
![](https://img-blog.csdnimg.cn/img_convert/9db8759ca98e2f81ec4696257f6ad67c.png)
输入格式
a b
θ
注:a、b 的单位为米,均为小数。仰角 θ 的单位为角度,包括度、分和秒数,其中度、分为整数,秒数为小数。
输出格式
h
注:h 的单位为米。
要求:输出2位小数,末位四舍五入。
输入样例
27.8 1.2
32 48 59.5
输出样例
19.13
完整的代码如下:
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main()
{
double a,b;
scanf("%lf%lf",&a,&b);
double c,d,e;
scanf("%lf %lf %lf",&c,&d,&e);
double du=c+d/60.0+e/3600.0;//度分秒转化为角度
double tand=tan(du*PI/180);//tan用法
double h=b+a*tand;
printf("%.2lf\n",h);
return 0;
}
- 度·分·秒之间的相互转化
度分秒=度+分/60+秒/3600
1度=60分=3600秒
弧度:角度*pi/180
- 三角函数的用法
sin、cos、tan、asin、acos、atan等三角函数的输入是弧度,而不是角度(ps:注意用法,需要加math.h头文件)
一般形式:
1.double tan(double x)
x为给定的弧度值,返回的为正切值
2.double atan(double x)
x为双精度浮点值,返回的是以弧度制表示的双精度值