第1关:三角形的面积
问题描述
给定三条线段的长度,判断这三条线段是否能够构成三角形。如果能够构成,则计算其面积。 三角形的面积可以根据海伦公式计算: 若三角形的三边边长分别为a,b,c,则三角形的面积: $$S = \sqrt {p(p-a)(p-b)(p-c)}$$
其中,p是三角形的半周长,即:
p = a + b + c 2 p = \frac{a+b+c} {2}
p = 2 a + b + c
输入
输入包括用英文逗号分开的三个浮点数,分别表示三条线段的长度。
输出
对于可以构成三角形的情况,输出三角形的面积,保留4位小数。 对于不能构成三角形的情况, 输出“无法构成三角形”(不包括双引号)。
输入示例
3,4,5
输出示例
6.0000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <math.h> int main () { double a, b, c; scanf ("%lf,%lf,%lf" , &a, &b, &c); if (a + b > c && a + c > b && b + c > a) { double p = (a + b + c) / 2 ; double area = sqrt (p * (p - a) * (p - b) * (p - c)); printf ("%.4f\n" , area); } else { printf ("无法构成三角形\n" ); } return 0 ; }
第2关:点和正方形的关系
问题描述
在平面坐标系中有一个正方形,四个顶点的坐标分别为(1, 1),(1, -1),(-1, -1)和(-1, 1)。给出平面中一个点的坐标(x, y),判定这个点是否在正方形范围内(包括正方形边界)。
输入
两个用空格分开的浮点数x和y,表示这个点的坐标(x, y)。
输出
若点在正方形范围内,输出yes,否则输出no。
输入示例
1 -0.3
输出示例
yes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int main () { double x, y; scanf ("%lf %lf" , &x, &y); if (x >= -1 && x <= 1 && y >= -1 && y <= 1 ) { printf ("yes\n" ); } else { printf ("no\n" ); } return 0 ; }
第3关:晶晶赴约会
问题描述
晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请使用switch多分支结构 编写一段程序帮助晶晶判断她能否接受贝贝的邀请。
输入
输入有一行,贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期日。 输入数据保证一定不会超出1~7的范围。
输出
输出有一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。 注意YES和NO都是大写字母!
输入示例
2
输出示例
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> int main () { int day; scanf ("%d" , &day); switch (day) { case 1 : case 3 : case 5 : printf ("NO\n" ); break ; default : printf ("YES\n" ); break ; } return 0 ; }
第4关:字符变身
问题描述
输入一个字符,如果是小写字母,则变身为对应的大写字母;如果是大写字母,则变身为对应的小写字母;其他字符不变身。请输出变身后的字符(包括不变身的字符)。
输入
一个字符,即要变身的字符。
输出
变身后的字符。
输入示例
A
输出示例
a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> int main () { char ch; scanf ("%c" , &ch); if (ch >= 'a' && ch <= 'z' ) { printf ("%c" , ch - 'a' + 'A' ); } else if (ch >= 'A' && ch <= 'Z' ) { printf ("%c" , ch - 'A' + 'a' ); } else { printf ("%c" , ch); } return 0 ; }
第5关:爬山问题
问题描述
中秋节到了,小明和朋友们约好了去爬山。山的形状就像是一个圆形平台,其纵截面是一个左右对称的梯形,如下图所示:
其底面在xy水平面上,底面圆心在原点O处。圆台的上底半径为3,下底半径为5,高为7。现在给出小明所在位置的平面坐标(x, y),聪明的你能否编写一段程序,自动计算出小明所在位置的高度z呢?
输入
两个用英文逗号分开的浮点数x和y,表示小明所在位置的平面坐标(x, y)。
输出
一个浮点数z,表示小明所在位置的高度z,保留2位小数。
输入示例
2.7,3.4
输出示例
2.30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> #include <math.h> int main () { double x, y; double r1, r2, h; double d, z; scanf ("%lf,%lf" , &x, &y); r1 = 3.0 ; r2 = 5.0 ; h = 7.0 ; d = sqrt (x * x + y * y); if (d >= r2) { z = 0.0 ; } else if (d <= r1) { z = h; } else { z = h * (1 - (d - r1) / (r2 - r1)); } printf ("%.2f\n" , z); return 0 ; }