C语言作业摘录
2025/3/11约 821 字大约 3 分钟
周二早八C语言程序设计实践课作业摘录
1 弧角转换
double rad (double deg) {
return deg * (PI / 180);
}
double deg (double rad) {
return rad / (PI / 180);
}
2 反三角函数
math.h
库中, 反三角函数名为asin()
, 并非arcsin()
.
3 单位转换
3.1 小球斜上抛运动
将小球向上斜抛, 忽略空气阻力, 它的运动轨迹将是一条抛物线. 设v0
是斜上抛的初速度, θ
是速度与水平面夹角, y0
是初始高度(即位置处于x=0
, y=y0
), g
是重力加速度, 则小球运动的轨迹方程如下:
将一小球斜上抛出时v0=25km/h
, y0=1
, x=0.5
, g=9.8m/s2
, 输入θ
(单位为角度)值, 计算并输出y
值(保留五位小数).
//小球斜上抛运动
#include <stdio.h>
#include <math.h>
int main() {
double g = 9.8; // 米/秒^2
double v0 = 25.0; // 千米/小时,需要转换为米/秒
double y0 = 1.0; // 米
double x = 0.5; // 米
double theta; // 角度值
double theta_rad, y;
printf("请输入角度值: \n");
scanf("%lf", &theta);
//代码开始
v0 = v0 / 3.6;
theta_rad = theta * (M_PI / 180.0);
y = x*tan(theta_rad) - g*x*x / (2*v0*cos(theta_rad)*cos(theta_rad)) + y0;
printf("y值为%.5lf米", y);
//代码结束
return 0;
}
注意v0 = v0 / 3.6;
3.2 地球上两点的大圆弧距离
设地球上两点A
和B
的纬度和经度(单位为度)分别为(xa, ya)
和(xb, yb)
. A
和B
两点之间沿着地球表面大圆弧距离(即最短弧线距离)的计算公式为(单位是英里):
d = R∗arccos(sin(xa)∗sin(xb)+cos(xa)∗cos(xb)∗cos(ya−yb))
该公式考虑了地球的曲率, 并假设地球是一个完美的球体(尽管实际上地球是一个椭球体, 但这个假设在大多数情况下足够精确). 其中, R
是地球的平均半径, R=59.9892英里/度
, 1英里 = 1.852公里
.
编写程序, 计算并打印地球上两点的大圆弧距离(单位是公里), 保留4位小数.
//地球上两点的大圆弧距离
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
double rad (double deg) {
return deg * (PI / 180);
}
int main() {
double xa, ya, xb, yb, R;
scanf("%lf", &xa); // #输入点A的经纬度
scanf("%lf", &ya);
scanf("%lf", &xb); // #输入点B的经纬度
scanf("%lf", &yb);
//代码开始
R = 59.9892/rad(1);
xa = rad(xa);
ya = rad(ya);
xb = rad(xb);
yb = rad(yb);
double d = R * acos(sin(xa) * sin(xb) + cos(xa) * cos(xb) * cos(ya - yb));
d = d * 1.852;
printf("%.4lf", d);
//代码结束
return 0;
}
弧角转换
R=59.9892英里/度
, 1英里 = 1.852公里
, 即R = 59.9892英里 / 1 deg
,
则R = 59.9892/rad(1) 英里/弧度
换算方法: rad = rad(deg) = deg * rad(1)
, 即deg => rad
需要*= rad(1)
. 但R
的单位中, deg
在分母位置, 则R /= rad(1)
4 大小写转换
大小写字符互换
ch += ch > 96 ? -32 : 32;
ASCII
中大小写字符恰好相差32, 直观理解可以
// 大写转小写
ch += 'a' - 'A';
// 小写转大写
ch += 'A' - 'a';
其中, 96为大小写字母分解(实际上有一个范围都可以分界, 取96这个数是由于受了上帝粒子的影响)