第 16
- #include <iostream>
- #include <cmath>
- using namespace std;
- const double r = acos(0.5);
- int a1, b1, c1, d1;
- int a2, b2, c2, d2;
- inline int sq(const int x) { return x * x; }
- inline int cu(const int x) { return x * x * x; }
- int main()
- {
- cout.flags(ios::fixed);
- cout.precision(4);
- cin >> a1 >> b1 >> c1 >> d1;
- cin >> a2 >> b2 >> c2 >> d2;
- int t = sq(a1 - a2) + sq(b1 - b2) + sq(c1 - c2);
- if (t <= sq(d2 - d1)) cout << cu(min(d1, d2)) * r * 4;
- else if (t >= sq(d2 + d1)) cout << 0;
- else {
- double x = d1 - (sq(d1) - sq(d2) + t) / sqrt(t) / 2;
- double y = d2 - (sq(d2) - sq(d1) + t) / sqrt(t) / 2;
- cout << (x * x * (3 * d1 - x) + y * y * (3 * d2 - y)) * r;
- }
- cout << endl;
- return 0;
- }
假设输入的所有数的绝对值都不超过 1000,完成下面的判断题和单选题:
判断
将第 21 行中 t 的类型声明从 int 改为 double,不会影响程序运行的结果。( )
A.正确
B.错误
判断
将第 26、27 行中的“/ sqrt(t) / 2”替换为“/ 2 / sqrt(t)”,不会影响程序运行的结果。( )
A.正确
B.错误
判断
将第 28 行中的“x * x”改成“sq(x)”、“y * y”改成“sq(y)” ,不会影响程序运行的结果。( )
A.正确
B.错误
第19题 判断
(2 分)当输入为“0 0 0 1 1 0 0 1”时,输出为“1.3090”。( )
A.正确
B.错误
第20题 单选
当输入为“1 1 1 1 1 1 1 2”时,输出为( )。
A.“3.1416”
B.“6.2832”
C.“4.7124”
D.“4.1888”
单选
(2.5 分)这段代码的含义为( )。
A. 求圆的面积并
B. 求球的体积并
C.求球的体积交
D.求椭球的体积并