C/C++三角形面积计算

文章讲述了如何编写一个程序,接收用户输入的三条边长,通过冒泡排序判断是否构成三角形,以及计算三角形面积的过程,使用了scanf()函数接收小数输入并应用面积公式进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        要求:键盘输入三条边的长度(包括整数和小数),利用程序判断能否构成三角形,能则计算面积,否则结束。

1.整体思路

        分析可知:必须先写一段程序用于接收键盘输入的三边边长,然后判断能否构成三角形,最后计算面积等事宜。

        难点在于判断能否构成三角形和三角形面积计算。

        都知道构成三角形的条件是:任意两边之和大于第三边,任意两边之差小于第三边。难点又在 “任意” 。直接对三边都进行穷举分析显然是不现实的,我提供的思路是:先对三边长度进行排大小,然后构成三角形的条件就可以改写为:较小两条边之和大于最大边长度,最大边与最小边的差值小于另一边长度。

        面积计算则直接用面积的长度计算公式:s = sqrt(p * (p - a) * (p - b) * (p - c)) (其中 p = (a + b + c) / 2)。

2.程序设计

2.1框架及输入

        首先是程序框架和接收键盘输入段的程序设计,要求能够接受小数,暂直接使用 scanf() 函数,具体程序设计如下:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)

int main()
{
	float a, b, c, s;
	scanf("%f %f %f", &a, &b, &c);
	
	return 0;
}

2.2判断能否构成三角形

        首先需要对三边长度进行排序,可以采用冒泡排序(可参考我的另一文章:冒泡排序法),这里直接使用简易的冒泡排序 (如果看不懂请参考:冒泡排序法),这里采用 s 作为临时变量,可以节省一定的空间。具体程序段设计如下:

if (a < b)
		s = a, a = b, b = s;
	if (a < c)
		s = a, a = c, c = s;
	if (b < c)
		s = b, b = c, c = s;

        然后是判断能否构成三角形,具体是判断能否满足:较小两条边之和大于最大边长度,最大边与最小边的差值小于另一边长度。具体程序段设计如下:

	if (b + c > a && a - c < b)
	{
		printf("是三角形\n");
        //…………
	}
	else
		printf("不能构成三角形\n");

2.3三角行面积计算

        最后一步是三角形面积计算,具体做法是:s = sqrt(p * (p - a) * (p - b) * (p - c)) (其中 p = (a + b + c) / 2)。具体程序段设计如下:

float p = (a + b + c) / 2;
		s = sqrt(p * (p - a) * (p - b) * (p - c));
		printf("三角形面积s = %f\n", s);

3.最终程序设计

        整合第2点中的内容,可得具体程序设计:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)

int main()
{
	float a, b, c, s;
	scanf("%f %f %f", &a, &b, &c);
	if (a <= 0 || b <= 0 || c <= 0)
	{
		printf("输入错误\n");
		return 0;
	}
	if (a < b)
		s = a, a = b, b = s;
	if (a < c)
		s = a, a = c, c = s;
	if (b < c)
		s = b, b = c, c = s;
	if (b + c > a && a - c < b)
	{
		printf("是三角形\n");
		float p = (a + b + c) / 2;
		s = sqrt(p * (p - a) * (p - b) * (p - c));
		printf("三角形面积s = %f\n", s);
	}
	else
		printf("不能构成三角形\n");
	return 0;
}

        此程序采用的数据类型是 float,可以输入小数计算三角形面积。以下是程序输出示例(输入的三条边长分别是:6.6、6.66、6.666):

        程序可能任然有可以改进的地方,欢迎各位读者品鉴!

        最后,如果有任何疑问,评论区和私信都欢迎你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值