【20190428】【编程实战C/Python】判断三角形的类型

一、问题描述

输入三边长度,判断组成的三角形类型,并输出它的面积和类型。

二、分析

第一步: 判断是否能组成三角形,再进行判断!

第二步: 三角形分类(等边、等腰、直角、普通) 

三、代码

 1. C语言实现

#include<stdio.h>
#include<stdlib.h>
#include<math.h>   // pow(x, y)和sqrt()的头文件
void main() {
	float a, b, c;
	float s, area;
	printf("请输入三条边的长度:\n");
	scanf_s("%f,%f,%f", &a, &b, &c);
	// 首先进行判断,是否能组成三角形(两边之和大于第三边)
	if (!(a + b > c && a + c > b && b + c > a))
		printf("Error! 不能组成三角形!\n");
	else {
		s = (a + b + c) / 2;
		area = (float)sqrt(s * (s - a) * (s - b) * (s - c));  // 数据类型转换
		printf("三角形面积是:%f\n", area);
		if (a == b && a == c && b == c)
			printf("等边三角形!\n");
		else if (a == b || a == c || b == c)
			printf("等腰三角形!\n");
		else if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(a, 2) \
			|| pow(b, 2) + pow(c, 2) == pow(a, 2))
			printf("直角三角形!\n");
		else
			printf("普通三角形!\n");
	}
	system("pause");
}

2. Python实现

#Exam_1_TypeOfTriangle.py
from math import sqrt
a, b, c = eval(input("请输入三条边的长度[逗号隔开]:\n"))
if a+b>c and a+c>b and b+c > a:
    s = (a+b+c)/2
    area = sqrt(s*(s-a)*(s-b)*(s-c))
    print("三角形面积为:{}". format(area))
    if a == b == c:
        print("等边三角形!\n")
    elif a==b or a==c or b== c:
        print("等腰三角形!\n")
    elif pow(a,2) + pow(b,2) == pow(c,2) or pow(a,2) + pow(c,2) == pow(b,2) \
             or pow(b,2) + pow(c,2) == pow(a,2):
        print("直角三角形!\n")
    else:
        print("普通三角形!\n")
else:
    print("不能组成三角形!\n")

四、知识点

1. C语言实现里面的 pow() 和 sqrt() 函数要加头文件 <math.h >。

2. 不论是C语言还是Python,编写代码如果一行太长,可以用 '\' 来换行。

3. 用scanf_s (C) 或者 input(Python) 获取数据时,输入时字符也要用英文的,中文会报错!

 

结论:可以输入空格(多少个都可以,前提scanf_s参数是用逗号分隔开的),但是不能用中文的 ','!

 4. Python里面:与(and)、或(or)。

5. eval的使用,不使用eval会报错。

6. 数据类型转换 (未解决,为什么要加float,不加为什么报错???)

7. printf若想输出,必须有格式控制字符,例如:%f%d等,不然会报错,传递参数过多。

8. Python3开方运算(三种方式)

第一:使用内置函数pow,例如:pow(X, 0.5);

第二:使用数学表达式:x**0.5,'**'表示乘方;

第三:使用math模块,import math 或者 from math import sqrt:sqrt(x) / math.sqrt(x)。

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Satisfying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值