MT1049 三角形坐标
(1)题目
输入三角形三个顶点A,B,C的坐标(x,y),根据公式计算并输出三角形面积。
S=1/2 * |x1y2+x2y3+x3y1-x1y3-x2y1-x3y2|
格式
输入格式: 依次输入三个顶点A,B,C的坐标(x,y),整型,空格分隔。 输出格式: 输出实型,保留2位小数。
样例1
输入: 0 1 0 0 1 0 输出: 0.50
(2)参考代码
#include<stdio.h> int main() { int x1, y1, x2, y2, x3, y3; double S; scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3); if (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2 >= 0) { S=1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2); } else { S=-1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2); } printf("%.2lf", S); return 0; }
MT1050 空间三角形
(1)题目
输入在三维空间的三角形三个顶点A,B,C的坐标(x,y,z),计算并输出三角形面积。不考虑不能构成三角形的特殊情况。
格式
输入格式: 依次输入三个顶点A,B,C的坐标(x,y,z),整型,空格分隔。 输出格式: 输出实型,保留2位小数。
样例1
输入: 0 0 0 0 0 3 3 0 0 输出: 4.50
(2)参考代码
#include<stdio.h> #include<math.h> int main() { int x1, y1, z1, x2, y2, z2, x3, y3, z3, a, b, c; double S, A, B, C, P; scanf("%d %d %d %d %d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2, &x3, &y3, &z3); a = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2); b = (x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2); c = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3); A = sqrt(a); B = sqrt(b); C = sqrt(c); P = (A+B+C)/2.0; S = sqrt(P*(P-A)*(P-B)*(P-C)); printf("%.2lf", S); return 0; }
MT1051 四边形坐标
(1)题目
输入四边4个顶点A,B,C,D的坐标(x,y),计算并输出四边形面积。
格式
输入格式: 依次输入4个顶点A,B,C,D的坐标(x,y),四边形一定是凸四边形,整型,空格分隔。 输出格式: 输出实型,保留2位小数。
样例1
输入: 0 0 1 0 5 5 0 1 输出: 5.00
备注
分解成2个三角形,三角形面积公式: S=1/2 * |x1y2-x1y3+x2y3-x2y1+x3y1-x3y2|
(2)参考代码
#include<stdio.h> int main() { int x1, y1, x2, y2, x3, y3, x4, y4; double S = 0; scanf("%d %d %d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4); if (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2 >= 0) { S += 1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2); } else { S += (-1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)); } if (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3 >= 0) { S += 1.0/2.0 * (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3); } else { S += (-1.0/2.0 * (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3)); } if (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4 >= 0) { S += 1.0/2.0 * (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4); } else { S += (-1.0/2.0 * (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4)); } if (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4 >= 0) { S += 1.0/2.0 * (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4); } else { S += (-1.0/2.0 * (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4)); } printf("%.2lf", S / 2); return 0; }
MT1052 直角坐标到极坐标的转换
(1)题目
请编写一个简单程序,实现直角坐标(x,y)到极坐标 (r,θ)的转换。数学中,极坐标系是一个二维坐标系,其中平面上的每个点由一个夹角和一段相对中心点——极点(相当于我们较为熟知的直角坐标系中的原点)的距离来表示。PI=3.1415926
其中:
格式
输入格式: 输入float型,空格分隔 输出格式: 输出float型,空格分隔,保留1位小数
样例1
输入: 1 1 输出: 1.4 45.0
(2)参考代码
#include<stdio.h> #include<math.h> #define PI 3.1415926 int main() { double x, y, r, o; scanf("%lf %lf", &x, &y); r = sqrt(x*x + y*y); o = atan2(y, x) * 180.0 / PI; printf("%.1lf %.1lf", r, o); return 0; }
MT1053 极坐标到直角坐标的转换
(1)题目
请编写一个简单程序,实现极坐标 (r,θ)到直角坐标(x,y)的转换。数学中,极坐标系是一个二维坐标系,其中平面上的每个点由一个夹角和一段相对中心点——极点(相当于我们较为熟知的直角坐标系中的原点)的距离来表示。PI=3.1415926
其中:
x = r × cos( θ )
y = r × sin( θ )
格式
输入格式: 输入实型,空格分隔 输出格式: 输出实型,逗号分隔,保留2位小数
样例1
输入: 1.4142 45 输出: 1.00,1.00
(2)参考代码
#include<stdio.h> #include<math.h> #define PI 3.1415926 int main() { double r, o, x, y; scanf("%lf %lf", &r, &o); x = r * cos(o*PI/180.0); y = r * sin(o*PI/180.0); printf("%.2lf,%.2lf", x, y); return 0; }
MT1054 弓形弦长
(1)题目
假定弓形弦长为C,半径为R,弦高为H,输入R和H,输出弓形弦长C。计算公式如下:
格式
输入格式: 输入实型,空格分隔。 输出格式: 输出实型,保留2位小数。
样例1
输入: 3 2.23607 输出: 5.80
(2)参考代码
#include<stdio.h> #include<math.h> int main() { double R, H, C; scanf("%lf %lf", &R, &H); C = 2 * sqrt(H * (2 * R - H)); printf("%.2lf", C); return 0; }