1
任务描述
本关需要完成判断三个边长能否构成三角形的小程序。
相关知识
任意两边之和大于第三边即可构成三角形。
关系运算符
==
检查两个操作数的值是否相等,如果相等则条件为真;
!=
检查两个操作数的值是否相等,如果不相等则条件为真;
>
检查左操作数的值是否大于右操作数的值,如果是则条件为真;
<
检查左操作数的值是否小于右操作数的值,如果是则条件为真;
>=
检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真;
<=
检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入三个数,判断这三个数能否构成三角形的三条边。
要求:
输出
1
表示能够构成一个三角形。输出
0
表示不能构成一个三角形。测试说明:
测试输入:
1.0 2.0 3.0
。 预期输出:0
。
#include <stdio.h>
int main() {
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)
printf("1\n");
else
printf("0\n");
return 0;
}
2
任务描述
本关你需要根据已知的三边完成计算三角形面积的小程序。
相关知识
海伦公式求面积
已知三角形的三边:
a
,b
,c
,半周长p=1/2(a+b+c)
,则三角形的面积公式s
为:
s=sqrt(p*(p-a)*(p-b)*(p-c))
sqrt
C
库函数double sqrt(double x)
返回x
的平方根。参数:
- x 表示浮点值。
返回值:
- 返回
x
的平方根。例如:
{
printf("Square root of %lf is %lf
", 16.0, sqrt(16.0) );
printf("Square root of %lf is %lf
", 5.0, sqrt(5.0) );
return(0);
}
运行上面的程序,这将产生以下结果:
Square root of 16.000000 is 4.000000
Square root of 5.000000 is 2.236068
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入为三角形的三边(
double
,保证输入的数据能构成三角形),请输出三角形的面积,并保留2
位小数。注意:
先判断是否可以构成三角形,即任意两边之和大于第三边,可以构成三角形情况下再计算,可以增加严谨性,提高程序健壮性;
若不能构成三角形,则输出“无法构成三角形”。
测试输入:
3 4 5
。预期输出:
面积:6.00
。测试输入:
8 12 20
。预期输出:
无法构成三角形
。
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, cosA, sinA;
printf("");
scanf("%f%f%f", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a) {
cosA = (b * b + c * c - a * a) / (2 * c * b);
sinA = sqrt(1 - (cosA * cosA));
float area = b * c * sinA * 0.5;
printf("面积:%.2f", area);
} else
printf("无法构成三角形\n");
return 0;
}
3
任务描述
本关需要完成判断一个整数是奇数、偶数或是素数的小程序。
相关知识
奇数
奇数,又称单数,整数中不能被
2
整除的数是奇数,奇数的个位为1
,3
,5
,7
,9
。奇数可用2k
+1表示,这里k
就是整数。偶数
偶数,又称双数,整数中,能被
2
整除的数是偶数,偶数的个位为2
,4
,6
,8
,0
。偶数可用2k
表示,这里k
就是整数。素数
质数又称素数。一个大于
1
的自然数,除了1
和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:任意给一个整数,判断该数是奇数还是偶数,是偶数的话直接输出;若是大于
1
的奇数,判其是否是素数,是素数的话输出素数,否则输出奇数。举例说明:
测试输入:8
。 预期输出:偶数
。测试输入:
9
。 预期输出:奇数
。测试输入:
7
。
预期输出:素数
。
#include <stdio.h>
int main() {
int a;
int i = 0;
printf("");
scanf("%d", &a);
if (a % 2 == 0) {
printf("偶数\n", a);
}
if (a % 2 != 0) {
for ( i = 2; i < a; i++) {
if (a % i == 0)
break;
}
if (i < a) {
printf("奇数\n");
} else {
printf("素数\n");
}
}
return 0;
}
4
任务描述
本关请完成计算指定公式输出结果的小程序。
相关知识
sqrt
功能:计算一个非负实数的平方根。
比如:计算
16
的平方根,sqrt(16)
就可以了。编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入
a
和b
的值,根据公式计算出最终的X
的值。其中a≠b
详情:
测试举例:
测试输入:
20.6 10.2
。 预期输出:X=2.14
。
#include <stdio.h>
#include <math.h>
int main () {
double a, b, X;
scanf("%lf%lf", &a, &b);
printf("X=%.2lf", (b + sqrt(b * b + 2 * a)) / (a - b));
return 0;
}
5
任务描述
本关需要完成一个输出某个三位数各个位上的数字的小程序。
相关知识
算数运算符
%
是取模运算符,获得整除后的余数。
/
是通过分子除以分母,获得整除后的整数部分。floor
floor()
是返回一个浮点型的整数部分,即向下取整。语法:
floor(double x)
说明:
x
是需要传入的浮点型数。举例如下:
float val = 1.2
floor(val) = 1
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:输入一个三位数的整数,分别输出其个位、十位、百位上的数字。
注意:
- 输出的各数字间有一个空格。
举例说明:
测试输入:
345
。 预期输出:5 4 3
。提示:方法不唯一,可以尽量尝试多种方式实现。
#include <stdio.h>
#include <math.h>
int main() {
int a, x1, x2, x3;
printf("");
scanf("%d", &a);
x1 = a / 100;
x2 = (a % 100) / 10;
x3 = a % 100 % 10;
printf("%d %d %d", x3, x2, x1);
return 0;
}
6
任务描述
本关需要统计出
10000
至99999
的整数之中,不包含数值4
的整数个数的小程序。相关知识
我不想再啰嗦各种知识点了,而我相信大家经过反复的练习,已经将该记住的都记住了,那么我们直接看代码回顾吧!
代码片段
1
:
// 当分数score小于60时,输出"考试不合格!"
int score = 58;
if (score < 60){
System.out.println("考试不合格!");
}
代码片段
2
:输出结果:
不及格
这个月零花钱没啦!
这个月零花钱没啦
代码片段
3
:
// 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
int score = 80;
if (score >= 60)
System.out.println("考试合格!");
else {
System.out.println("考试不合格!");
}
代码片段
4
:
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while( a < 20 )
{
printf("a 的值: %d
", a);
a++;
}
return 0;
}
输出结果::
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
代码片段
5
:
for(var a=10; a<20 ;i++){
printf("a 的值: %d
", a);
}
输出结果:
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:统计
10000
至99999
中,不包含4
的数值的个数。测试说明:
预期输入:
预期输出:10000~99999中不包含4的个数为:52488
。
#include <stdio.h>
int main() {
int a;
int N = 0;
int i, j;
for (i = 10000; i <= 99999; i++) {
a = i;
j = 0;
while (a) {
j = a % 10;
if (j == 4)
break;
a /= 10;
}
if (j != 4)
N++;
}
printf("10000~99999中不包含4的个数为:%d", N);
return 0;
}
7
任务描述
本关需要完成求解指定一元二次方程式的根的小程序。效果如下:
测试集输入:
-2.5 3.8 1.2
。 测试集输出:x1=-0.27 x2=1.79
。相关知识
if-else语句
if...else
比if
语句的操作多了一步,当条件成立时,则执行if
部分的代码块; 条件不成立时,则进入else
部分。例如,如果今天不下雨,就出门逛街,否则就宅在家玩游戏。
用法如下:
if (<条件>) {
<条件成立执行的代码>
}else {
<条件不成立执行的代码>
}
执行过程如下:
例如:
// 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
int score = 80;
if (score >= 60)
System.out.println("考试合格!");
else {
System.out.println("考试不合格!");
}
编程要求
请仔细阅读右侧代码,根据方法内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:求ax2+bx+c=0方程的根。
由键盘输入任意值
a
,b
,c
,需要在程序中进行判断:如果a=0,输出错误提示
系数a不能为零
; 如果b2−4ac<0,输出方程无实根
的信息;
如果b2−4ac>=0,计算并输出方程的两个实根。测试说明:
测试输入:
2 3 4
。 预期输出:方程无实根
。
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, d, x1, x2;
printf ("");
scanf ("%lf %lf %lf", &a, &b, &c);
d = b * b - 4 * a * c;
if (a == 0 )
{
printf ("系数a不能为零\n");
return 1;
}
if (d < 0 )
{
printf ("方程无实根\n");
return 1;
}
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf ("x1=%.2f x2=%.2f\n", x1, x2);
}