航空航天大类C语言程设第三次练习赛
第四期更新,
(A题)求区间交并集
多行数据,每行有两个数,用空格分开,表示每个区间的下和上界,保证是合法的非空集,而且得到的并集是一个连续的区间。
输入样例:
1 3
1 2
-1 5
输出样例:
1 2
-1 5
样例图示:
思路很简单,最开始的区间作为初始交并区间,每读入一个区间:求并集,左端点的最小值和右端点的最大值作为并集端点;求交集,左端点最大值和右端点最小值作为交集端点,注意如果右端点的最小值大于等于左端点最大值,说明为空集直接退出输出空集。
#include<stdio.h>
int max(int x, int y) {
return x > y ? x : y;
}
int min(int x, int y) {
return x < y ? x : y;
}
int main() {
int x, y, a, b, c, d; //a,b为交集的左右端点,c,d为并集左右端点
scanf("%d%d", &x, &y);
a = x, c = x, b = y, d = y;
while (~scanf("%d%d", &x, &y)) {
a = max(a, x);
b = min(y, b);
c = min(c, x);
d = max(y, d);
}
if (a >= b) puts("Empty%0.9f\\?");
//有一个小坑(来自出题人的恶意,有一个转义符,注意到了吧)
else printf("%d %d\n", a, b);
printf("%d %d", c, d);
return 0;
}
(B题)
一行字符串,里面含有若干个元音字母,将里面的元音字母顺序反转并输出
输入:共两行。
第一行为正整数n,代表字符串的长度( 1 ≤ n ≤ 100 1 \le n \le 100 1≤n≤100),保证全为小写字母
第二行为字符串,里面含有若干个元音字母 (至少含有一个元音字母)。
输出:一行反转元音字母顺序的字符串
输入样例:
5
apple
输出样例:
eppla
万能数组大法知道字符串长度,开一个存储元音字母的数组,先逆序遍历字符串,如果读到元音字母就顺序存入存储用数组,并用一个开关数组,字符串位置标记为1,表明这个位置是元音字母。再顺序遍历0~n-1的位置,如果对应开关为1,是元音字母,输出存储的元音字母,不是就正常输出原字符串的字母。
#include<stdio.h>
char word[101], v[101];
int f[101];
int vowel(char a) {
if (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u') return 1;
else return 0;
}
int main() {
int n, i, j = 0;
scanf("%d", &n);
scanf("%s", word);
for (i = n - 1; i >= 0; i--) {
if (vowel(word[i])) {
v[j] = word[i];
j++;
f[i] = 1;
}
}
j = 0;
for (i = 0; i < n; i++) {
if (f[i]) {
printf("%c", v[j]);
j++;
}
else printf("%c", word[i]);
}
return 0;
}
(C题)中二不堪的题目描述
2333年,X国和Y国在进行关于人类和平的国际会谈,充满阴谋的X国却没有谈判的诚心,Y国间谍得知重要的武器文件存放在四角大楼,出于正义,Y国决定发射零伤亡武器Zero,销毁武器文件。
由于X国守备重重,Y国仅有三名间谍在四角大楼执行任务,巧妙的是,三名间谍的位置距离重要武器文件恰好相同!且三人不在同一直线上。
情况紧急,三名间谍仅能传回三人的坐标 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x1,y1) ,(x2,y2),(x3,y3) (x1,y1),(x2,y2),(x3,y3),假设三人在六角大楼的位置可以在一个 x O y xOy xOy平面上。
输入
第一个,两个实数 x 1 , y 1 x_1,y_1 x1,y1
第二个,两个实数 x 2 , y 2 x_2,y_2 x2,y2
第三个,两个实数 x 3 , y 3 x_3,y_3 x3,y3
输出
共一行,为武器文件所在的位置,格式为 ( O x , O y ) (Ox,Oy) (Ox,Oy)保留2位小数。
输入样例
1.0 0.0
-1.0 0.0
0.0 1.0
输出样例
(0.00,0.00)
就是求这个三角形的外心坐标(三角形外接圆的圆心,三边中垂线的交点,到三顶点等距),外心坐标公式推荐阅读博文(有详细推导,排版也比较好看):
三角形的外心公式及推导
都是带学生行列式肯定能看懂,这个题就是公式麻烦,写代码时注意写对,我觉得也没有人想写行列式展开后的式子
公式贴出:
O x = ∣ x 2 2 − x 3 2 + y 2 2 − y 3 2 2 y 2 − y 3 x 3 2 − x 1 2 + y 3 2 − y 1 2 2 y 3 − y 1 ∣ ∣ x 2 − x 3 y 2 − y 3 x 3 − x 1 y 3 − y 1 ∣ , O y = ∣ x 2 − x 3 x 2 2 − x 3 2 + y 2 2 − y 3 2 2 x 3 − x 1 x 3 2 − x 1 2 + y 3 2 − y 1 2 2 ∣ ∣ x 2 − x 3 y 2 − y 3 x 3 − x 1 y 3 − y 1 ∣ Ox=\frac{\begin{vmatrix} \frac{x^2_2-x^2_3+y^2_2-y^2_3}{2} & y_2-y_3 \\ \frac{x^2_3-x^2_1+y^2_3-y^2_1}{2} & y_3-y_1 \end{vmatrix}}{\begin{vmatrix} x_2-x_3 & y_2-y_3 \\ x_3-x_1 & y_3-y_1 \end{vmatrix}},Oy=\frac{\begin{vmatrix} x_2-x_3 & \frac{x^2_2-x^2_3+y^2_2-y^2_3}{2} \\ x_3-x_1 & \frac{x^2_3-x^2_1+y^2_3-y^2_1}{2} \end{vmatrix}}{\begin{vmatrix} x_2-x_3 & y_2-y_3 \\ x_3-x_1 & y_3-y_1 \end{vmatrix}} Ox=∣∣∣∣x2−x3x