浅谈嵌套if-else

之前课堂上要求的求三角形的面积,我用if-else多添加了一个判断三角形的类型的程序。代码如下: 

#include<stdio.h>
#include<math.h>
main(void)
{
float a,b,c,s;
	printf("请输入三角形的三边长:");
 	scanf("%f%f%f",&a,&b,&c);
 
	 {
		if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a&&b-a<c&&c-a<b&&c-b<a)	//判断是否满足三角形的条件(两边之和大于第三边、两边只差小于第三边) 
			{if(a==b&&b==c)													//判断a=b=c是否成立(不可用a==b==c) 
			printf("\n该三角形为等边三角形");
			else
				if(a==b||a==c||b==c)										//如果不成立判断三边里是否有两边相等 
					if((pow(a,2)+pow(b,2))==pow(c,2)||						//判断是否满足勾股定理 
						(pow(a,2)+pow(c,2))==pow(b,2)||
						(pow(c,2)+pow(b,2))==pow(a,2))
						printf("\n该三角形为等腰直角三角形");
							else
							printf("\n该三角形为等腰三角形");
								else
								if((pow(a,2)+pow(b,2))==pow(c,2)||
								(pow(a,2)+pow(c,2))==pow(b,2)||
								(pow(c,2)+pow(b,2))==pow(a,2))
								printf("\n该三角形为直角三角形");
				else
				printf("\n该三角形为普通三角形") ;
							
					{
					s=a+b+c;
 					s=s/2;
					s=sqrt(s*(s-a)*(s-b)*(s-c));
					printf("\n三角形的面积为:%f",s);
					}		
			}
		else
		{
		printf("\n该三角形不存在!");
		}
	}		
	return 0;
}

上边的注释里解释了一些比较长的代码的意义,这里做少许总结:

数学函数:sqrt意为开方

                        pow(x,y)意为x的y次方

几个新接触的逻辑符号:

&&为逻辑与运算,前后两者同时满足时结果为真(换句话说两者里任何一组不满足则结果都为假)

||为逻辑或运算,两者中至少有一者满足时结果则为真(换句话说只有两者同时不满足时结果才为假)

==为判断两者是否相等,两者相等为真,不相等为假

此处引出一下:

#include<stdio.h>
int main(void) 
{
    int a,b,c;
    scanf("%d%d",&a,&b);
    c=1;
    if(a==b==c)
    printf("A");
    else
    printf("B");
return 0; 
}

若如此编程,想要输出A,只需要a,b两者相等便可。

解释:a==b==c是自左向右判断,a和b若相等,则结果为真,a==b便会等效为1,再是1与c来比较;相反,若a与b不等,则结果为假,a==b便会等效为0,再是0与c来比较。因此a==b==c运算时都是0与c比较或者1与c比较,若要让程序判断a,b,c三者是否相等,可以用与运算:a==b&&a==c来得到想要的结果。

嵌套:

嵌套是用if-else的定义来完成的,如果if括号内的条件满足,则执行if~else之间的程序,若条件不满足,则执行else下边的程序。如上程序里,第一个if是判断输入的三条边是否满足任意两边之和大于第三边、任意两边只差小于第三边,如果满足,则继续判断该三角形的类别,注意看可以发现,第一个if下边打了个花括号{},一直到最后一个else之前才截止,若不打这个花括号,系统就会判定你这个else之前没有if;若else后有多个条件,只有else紧接着的第一条命令是不满足条件才执行的则不需要加花括号,此后的命令无论条件是否满足都会正常执行;如若else后有多条是不满足条件才执行的命令,那么就需要将在这几条命令全部用花括号括起来。第一个代码里:

					{
					s=a+b+c;
 					s=s/2;
					s=sqrt(s*(s-a)*(s-b)*(s-c));
					printf("\n三角形的面积为:%f",s);
					}		

 只要第一个if满足条件这串代码都会执行。

总的来讲就是:

if(条件)

{

代码段1    //在代码段1内又可以有下一个if-else函数或者其他函数

}

else

代码段2    //在代码段2内也可以有更多的函数,如果后面还有无论满足条件与否都要执行的命令,则代码段2需要用花括号括起来

注意:if与else之间的多于两条命令的代码都需要用花括号括起来!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Traveler·玖安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值