#C语言学习笔记#三角形问题

//《C语言综合项目实战》项目一
//讨论三角形是否成立问题,可以从三角形两边之和大于第三边这个性质出发
//可以私用&&运算符构建一个if语句,或者使用if语句的嵌套。
#include<stdio.h>//因为需要使用输入和输出函数,所以需要抵用头文件<stdio.h>
#include<math.h>//因为主函数内要使用sqrt函数,所以需要使用头文件<math.h>
int main() {
	int a = 0, b = 0, c = 0, e = 0,f=0,g=0;//声明整形变量a,b,c,e,f,g
	//a,b,c代表着三角形的三边。
	//e,f,g将三边的大小关系排列出来,e为最大值。
	double d = 0, S = 0;//声明双精度型浮点变量d,S
	printf("请输入三个数字a,b,c能否构成三角形:");
	scanf_s("%d%d%d", &a, &b, &c);//输入三个数字,以构建三角形的三边。
	if (a + b > c) {//第一层if语句
		if (b + c > a) {//第二层if语句
			if (a + c > b) {//第三层if语句
				printf("%d,%d,%d三个数字可以构成三角形\n", a, b, c);
				d = (a + b + c) / 2;//使用三角形的面积公式,先计算出三边之和再除于二
				S = sqrt(d * (d - a) * (d - b) * (d - c));//运用计算公式,计算出三角形的面积。
				printf("三角形面积为:%f\n", S);
				if (a > b) {//if语句的嵌套,是为了将三边的大小关系罗列出来。
					//此时前置条件为a>b,即现在不比较C的情况下a为最大值。
					//所以如果a>C,即可以认为a>b&&a>c,所以此时a为最大值。
					if (a > c) {
						e = a;//将最大值赋予e;
						f = b;
						g = c;
					}
					//此时前置条件为a>b,即现在不比较C的情况下a为最大值。
					//所以如果a!>c,即可以认为c>a>c,所以此时c为最大值。
					else {
						e = c;//将最大值赋予e;
						f = a;
						g = b;
					}
				}
				//此时前置条件为a!>b,即现在不比较C的情况下b为最大值。
				//所以如果b>c,即可以认为b>a&&b>c,所以此时b为最大值。
				else {
					if (b > c) {
						e = b;//将最大值赋予e;
						f = a;
						g = c;
					}
					//此时前置条件为a!>b,即现在不比较C的情况下b为最大值。
					//所以如果b!>c,即可以认为c>b>a,所以此时c为最大值。
					else {
						e = c;//将最大值赋予e;
						f = a;
						g = b;
					}
				}
				//因为此时f,g都不是最大值,即不为直角三角形的斜边。
				//若面积能够等于底X高除于二,即代表着该三角形为直角三角形。
				if (S == (f * g) / 2) {
					printf("该三角形为直角三角形");
				}
				//等腰三角形,即是两边相等,另一边不相等,所以使用if语句,构建出条件
				//若有两边相等,且不等于第三边,这为等腰三角形。
				if (a == b&&a!=c) {
					
						printf("该三角形为等腰三角形");
					
				}
				if (a == c&&a!=b) {
				
						printf("该三角形为等腰三角形");
					

				}
				if (b == c&&b!=a) {
					
						printf("该三角形为等腰三角形");
					
				}
				//使用&&运算符,将三边相等的条件并起来。
				//若三边相等,即为等边三角形。
				if (a == b && a == c && b == c) {
					printf("该三角形为等边三角形");
				}

			}
			//不满足两边之和大于第三边这个条件,即输入的三个数字不足以构成一个三角形。
			else {
				printf(" %d,%d,%d三个数字不可以构成三角形", a, b, c);//第三层if语句的else条件
			}
		}
		//不满足两边之和大于第三边这个条件,即输入的三个数字不足以构成一个三角形。
		else { ("%d,%d,%d三个数字不可以构成三角形", a, b, c); }//第二层if语句的else条件
	}
	//不满足两边之和大于第三边这个条件,即输入的三个数字不足以构成一个三角形。
	else {
		printf("%d,%d,%d三个数字不可以构成三角形",a,b,c);//第一层if语句的else条件
	}
}
//总结:在讨论三角形是否成立问题,以及计算三角形的面积和讨论三角形为什么形状的三角形问题上,首先在数据精度方面
//double类型的数据会有些许不准确。
//代码行可以再进行简略。
//有时候会出现面积计算出为0的情况。
//要考虑当前三角形是多种类型的三角形的情况。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值