再次发现漏洞,为什么if else 前一种写法和后一种 一个对一个错。什么原因??
别看下面的程序很杂乱,我只是把下面这块程序在整个程序中的位子移了一下,一个对一个错 为什么呢》?????第一种:下面这种是错的:
程序代码:
#include"stdio.h" #include"math.h"" int main() { double a,b,n,m,c,d; double x,y,t; printf("请依次输入第一个长方形的长和宽:\n"); scanf("%f %f",&a,&b); printf("请依次输入第二个长方形的长和宽:\n"); scanf("%f %f",&n,&m); c=sqrt(1.0*n); d=sqrt(1.0*m/10); if(a>c&&b>d||a==c&&b>d||a>c&&b==d||a==c&&b==d) printf("第一个长方形可以放进第二个长方形里"); x=sqrt(a*a+b*b); y=1.0*c*a/x; t=(a-y)*sqrt(2.0);//只是这段程序移了下 else if(t>d) printf("第一个长方形可以放进第二个长方形里"); else printf("第一个长方形不可以放进第二个长方形里"); }
第二种:这种是对的:
程序代码:
#include"stdio.h" #include"math.h"" int main() { double a,b,n,m,c,d; double x,y,t; printf("请依次输入第一个长方形的长和宽:\n"); scanf("%f %f",&a,&b); printf("请依次输入第二个长方形的长和宽:\n"); scanf("%f %f",&n,&m); c=sqrt(1.0*n); d=sqrt(1.0*m/10); x=sqrt(a*a+b*b); y=1.0*c*a/x; t=(a-y)*sqrt(2.0);//这段程序移了下 if(a>c&&b>d||a==c&&b>d||a>c&&b==d||a==c&&b==d) printf("第一个长方形可以放进第二个长方形里"); else if(t>d) printf("第一个长方形可以放进第二个长方形里"); else printf("第一个长方形不可以放进第二个长方形里"); }