今天写程序时发现一个问题,就是在if条件语句中程序跳不出来,只能一直执行成立的条件。不论输入正确的还是不正确的条件,始终结果都是输出正确的条件的结果。这我就很纳闷,if条件语句也不是循环语句,为什么跳不出来呢?
先看看我今天写的程序吧,要求随意输入三角形的三边边长,判断能否成为三角形,如果是三角形求它的面积。
#include <stdio.h>
#include<math.h>
int main()
{
float a,b,c;
double p,s;
printf("please input three nums:");
scanf("%f %f %f",&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a))
printf("is sanjiaoxing\n");
else
{
printf("not sanjiaoxing\n");
return 0; //一开始我没有写return 0; 程序编译是没有问题的,但是执行就是不能满
} 足想要的结果。然后换了好几种写法,都不行。最后才在这里加上return
p=(a+b+c)/2; 0;原因,如果if的条件成立,就不会执行else,跳过else,直接运行下面 的,而最后的return 0;是if的返回值。这里如果if条件不成立的话,会
执行else,但执行完没有返回值,因为最后的return0;是if的返回值, 这里就会出错了,出的结果始终是shisanjiaoxing 或 bushisanjiaoxing 。所以这里return 0;不能漏掉。
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("sanbianshi:%f\t%f\t%f\n",a,b,c);
printf("mianjishi:%f\n",s);
return 0;
}