判断三角形种类
- 输入三个边的长度,判断输入三角形的类型
初始代码
#include <stdio.h>
int main(){
int s1,s2,s3;
printf("请输入三角形三边长度:");
scanf("%d%d%d",&s1,&s2,&s3);
if(s1 ==s2 && s2==s3){
printf("输入为正三角形");
}
if(s1 ==s2 || s2==s3 || s1==s3){
printf("输入为等腰三角形");
}
if(s1*s1+s2*s2==s3*s3 ||
s1*s1+s3*s3==s2*s2 ||
s2*s2+s3*s3==s1*s1){
printf("输入为直角三角形");
}
return 0;
}
- 上面代码是有问题的,主要是当第一次输入是等边三角形时它会判断两次,因此if的顺序是影响输出结果的,条件1和条件和有点互斥。
#include <stdio.h>
int main(){
int s1,s2,s3;
printf("请输入三角形三边长度:");
scanf("%d%d%d",&s1,&s2,&s3);
if(s1 ==s2 || s2==s3 || s1==s3){
printf("输入为等腰三角形");
}
if(s1 ==s2 && s2==s3){
printf("输入为正三角形");
}
if(s1*s1+s2*s2==s3*s3 ||
s1*s1+s3*s3==s2*s2 ||
s2*s2+s3*s3==s1*s1){
printf("输入为直角三角形");
}
return 0;
}
优化
#include <stdio.h>
int main(){
int s1,s2,s3;
printf("请输入三角形三边长度:");
scanf("%d%d%d",&s1,&s2,&s3);
//如果对输入的数字进行排序就会大大提高阅读性
//这里就先不加了思想就是这样
if(s1 ==s2 || s2==s3){
printf("输入为等腰三角形");
}
if(s1 ==s3){
printf("输入为正三角形");
}
if(s1*s1+s2*s2==s3*s3){
printf("输入为直角三角形");
}
return 0;
}