C语言if语句的嵌套 和 提供一些关于if else的小程序
1个回答
展开全部
三、if--else if--else结构。 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; . . . else 语句n; 这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它有关的语句, 并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个else 语句n。最后这个else常起着缺省条件的作用。同样,如果每一个条件中有多于一条语句要执行时,必须使用{和}把这些语句包括在其中。 条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。 例如: if(x>20||x<-10) if(y<=100&&y>x) printf(Good); else printf(Bad); 对于上述情况, Turbo C2.0规定: else语句与最近的一个if语句匹配, 上例中的else与if(y<=100&&y>x)相匹配。为了使else与if(x>20||x<-10)相匹配, 必须用花括号。如下所示: if(x>20||x<-10) { if(y<=100&&y>x) printf(Good); } else printf(Bad); 下面举几个例子: 1.输入一个数,如果大于0,输出plus;如果是负数,输出negative;如果正好是0,则输出zero。 main() { float num; scanf(%f,&f); if(num>0) printf(plus\n); else if(num<0) printf(negative\n); else printf(zero\n); } 先定义两个变量,然后输入一个数,然后判断这个数的范围,输出对应的字符串。 2.输入一个数x,输出y。其中y是x的绝对值。 main() { float x,y; scanf(%f,&x); if(x>=0) y=x; else y=-x; printf(%f\n,y); } 程序比较简单,这儿就不分析了。 其实Trubo C 2.0把一些常用的功能都写好了,我们只需要使用就可。例如求绝对值的功能在C的库里面就有。看下面的: #include math.h main() { float x,y; scanf(%f,&x); y=fabs(x); /*求x的绝对值,然后赋值给y*/ printf(%f\n,y); } 这个程序和上面的程序完成的功能是一模一样的,都是求绝对值。可以看出,用下面这个方法比上面就要好一些。由于fabs()是一个函数,系统自带的,所以在使用它的时候,我们必须把它所在的库文件math.h包含都程序中,即程序最前面一行。类似的还有求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。具体哪些有哪些没有,在什么库里面,可以查看一些手册。 3.输入x,输出y,x和y满足关系: x<-5 y=x; -5<=x<1 y=2*x+5; 1<=x<4 y=x+6; x>=4 y=3*x-2; 程序如下: main() { float x,y; scanf(%f,&x); if(x<-5) y=x; else if(-5<=x&&x<1) y=2*x+5; else if(1<=x&&x<4) y=x+6; else y=3*x-2; printf(%f\n,y); } 这里要说明两点: (1).-5<=x&&x<1不能写成-5<=x<1;1<=x&&x<4也不能写成1<=x<4;在C语言中,不能认识连续不等式。 (2).y=2*x+5不能写成y=2x+5;y=3*x-2也不能写成y=3x-2;这与我们平时所写的方法不一样。 4.输入三个数x,y,z,然后按从大到小输出。 main() { float x,y,z; scanf(%f%f%f,&x,&y,&z); if(x>=y&&x>=z) { printf(%f\t,x); if(y>=z) printf(%f\t%f\n,y,z); else printf(%f\t%f\n,z,y); } else if(y>=x&&y>=z) { printf(%f\t,y); if(x>=z) printf(%f\t%f\n,x,z); else printf(%f\t%f\n,z,x); } else { printf(%f\t,z); if(x>=y) printf(%f\t%f\n,x,y); else printf(%f\t%f\n,y,x); } } 说明:这是一个典型的if语句嵌套结构,如果不使用括号,那么if和else的对应关系就乱了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询