10.5习题温习
题干:某天铁子哥和黄鸡在路跑时,看到一个精致的三角形花坛。铁子哥不禁赞叹连连,并且想知道这个三角形花坛的内接圆面积,然后在这个圆里摘一朵漂亮的小花花。
已知这个三角形的三条边的长度a,b,c,圆周率取PI=3.14159,求此三角形的内接圆面积。可是铁子哥记性不大好,可能记错了边的长度。若是摘不到圆中的小花花,无奈只可离去。
附海伦公式
p=(a+b+c)/2,SABC=p∗(p−a)∗(p−b)∗(p−c) 一开始我想的就是判断三边能否构成一个三角形的条件就是任意两边之和大于第三边即可,所以在写if判断时就只写了一个条件(如下)
#include<bits/stdc++.h> using namespace std; int main(){ double a,b,c,d,p,s,r,s1; cin>>a; for(int i = 0;i<a;i++) { cin>>b>>c>>d; p=(b+c+d)/2; s=sqrt(p*(p-b)*(p-c)*(p-d)); r=s/p; s1 = r*r*3.14159; if(b+c>d) { printf("%.2lf",s1); } else {cout<<"Oh my god!!";} cout<<endl; } return 0; }
自测时是可以通过的,一提交就显示错误。
后来询问了舍友,他告诉我说要把任意两边之和大于第三边体现出来,而非我想的那么简单,所以就将if的条件改成三个与的关系
再次提交之后就通过了。
总结:在考虑条件时要全面,并且要熟练运用逻辑之间的关系,这样才能不出错