一、问题描述
输入三边长度,判断组成的三角形类型,并输出它的面积和类型。
二、分析
第一步: 判断是否能组成三角形,再进行判断!
第二步: 三角形分类(等边、等腰、直角、普通)
三、代码
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)。