本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长
的格式输出,保留两位小数。否则,输出
These sides do not correspond to a valid triangle
输入样例1:
5 5 3
输出样例1:
area = 7.15; perimeter = 13.00
输入样例2:
1 4 1
输出样例2:
These sides do not correspond to a valid triangle
分析:
- 包含<stdio.h>头文件以使用printf和scanf函数。
- 在main函数中定义三个整数a, b, c来存储三角形的三条边的长度。
- 定义两个double类型的变量area和s,以及一个double类型的变量perimeter来存储三角形的面积、半周长和周长。
- 使用scanf函数从用户那里接收三个整数作为三角形的三条边的长度。
- 计算半周长s,方法是把a、b、c相加然后除以2.0。
- 计算三角形的周长,方法是把a、b、c相加。
- 检查a、b、c是否满足构成三角形的条件,即任意两边之和大于第三边。如果不满足这个条件,打印出错误消息并结束程序。
- 如果满足构成三角形的条件,那么使用海伦公式计算三角形的面积。这是通过计算s、(s-a)、(s-b)、(s-c)的乘积的平方根来完成的。但是,为了确保结果的准确性,我们需要在计算面积之前检查a、b、c是否为非负数。
- 如果a、b、c都是非负数,那么打印出面积和周长的值。否则,打印出错误消息并结束程序。
- 程序结束时返回0。
C语言:
#include<stdio.h>int main()
{int a,b,c;double area,s,perimeter;scanf("%d %d %d",&a,&b,&c);s=(a+b+c)/2.0;perimeter=a+b+c;area=pow(s*(s-a)*(s-b)*(s-c),0.5);if((a+b)>c&&(a+c)>b&&(b+c)>a){printf("area = %.2lf; perimeter = %.2lf",area,perimeter);}else{printf("These sides do not correspond to a valid triangle");}return 0;
}
结果:
总结:
这是代码的基本思路。然而,代码中存在一些问题。首先,它没有正确地处理负数输入。其次,它没有正确地处理不满足三角形条件的输入。因此,我们需要对代码进行修改以解决这些问题。