黑马程序员_C语言基础_分支结构(if……else,switch)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   

    程序的结构有三种:顺序结构(最简单的),分支结构,循环结构。这次对分支结构使用过程需要注意的和使用条件做了一些总结回顾。

1、if条件判断

    格式:if(条件){满足条件的语句}

    括号内的条件可以是表达式,变量,数值,有返回值的函数。

    语义为:如果if条件的值为真时,则执行其后的语句,否则不执行该语句。跳过该判断语句,执行下面的语句。语句可以是单条语句,也可以是用花括号{}包括起来的复合语句。

   简单判断成绩60分以上为合格,60分以下为不合格:

int main(int argc,const char *argv[])
{
	//定义成绩的变量
	int a;
	//接收并输出成绩
	printf("请输入成绩:\n");
	scanf("%d", &a);
	//大于60分为合格,不足则不及格
	if (a>=60)
	{
		printf("恭喜你成绩合格,你的成绩是%d\n",a);
	}
	printf("很遗憾你成绩不合格,你的成绩是%d\n", a);
	return 0;
}
2、if……else条件判断

     格式:if(条件)

               {

                   执行语句;

               }

              else

               {

                   执行语句;

               }

    语义为:当if条件的值为真时,则执行其后的语句,否则直接执行else后面的语句。

    简单判断成绩60分以上为合格,60分以下为不合格:

int main(int argc,const char *argv[])
{
	//定义成绩的变量
	int a;
	//接收并输出成绩
	printf("请输入成绩:\n");
	scanf("%d", &a);
	//大于60分为合格,不足则不及格
	if (a>=60)
	{
		printf("恭喜你成绩合格,你的成绩是%d\n",a);
	}
	else
	{
		printf("很遗憾你成绩不合格,你的成绩是%d\n", a);
	}
	return 0;
}

3、if……else if…… else条件判断

     格式:if(条件1)

                 {

                   执行语句;

               }

              else if(条件2)

               {

                   执行语句;

               }

              ……

               {

                   执行语句;

               }

              else

               {

                   执行语句;

               }

    语义为:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。

      实例:输入一个成绩,判断成绩所在的等级,并打印输出。90-100为A,80-90为B,70-80为C,60-70为D,60分以下为E。

int main(int argc,const char *argv[])
{
	//定义成绩的变量
	int a;
	//接收并输出成绩
	printf("请输入成绩:\n");
	scanf("%d", &a);
	//判断成绩所在的区间并打印输出
	//先判断成绩在合法区间内
	if (a<0 || a>100)
	{
		printf("你输入成绩不合法\n", a);
	}
	else if(a >= 90)
	{
		printf("A\n");
	}
	else if (a>=80)
	{
		printf("B\n");
	}
	else if (a >= 70)
	{
		printf("C\n");
	}
	else if (a >= 60)
	{
		printf("D\n");
	}
	else 
	{
		printf("E\n");
	}
	return 0;
}

     注意:要注意代码的严谨性,要考虑到if判断条件所能执行是区间,看清作用域。

    例:int main()
          {
               int x=10, y=20, t=0;
               if (x==y) t=x; x=y; y=t;
               printf("%d,%d\n",x,y);
               return 0;
           }

      if条件成立为真时,所执行的语句只是 t=x;因为没有大括号,作用域只是管一个分号,执行完第一个分号则结束了判断。x=y; y=t;是不受if条件控制的。当if (x==y) {t=x; x=y; y=t;}又是不一样的,if条件为真时,大括号内的三个语句都执行,为假时都不执行。

4、switch语句

     格式:switch(表达式){

               case 常量表达式1:语句1;

               case 常量表达式2:语句2;

                ……

                default :语句n+1;

            }

实例:输入一个成绩,判断成绩所在的等级,并打印输出。90-100为A,80-90为B,70-80为C,60-70为D,60分以下为E。

int main(int argc,const char *argv[])
{
	//定义成绩的变量
	int a;
	//接收并输出成绩
	printf("请输入成绩0-100之间的数字:\n");
	scanf("%d", &a);
	//判断成绩所在的区间并打印输出
	//通过商判断所在的区间
	switch (a / 10)
	{
	case 9:printf("A"); break;
	case 8:printf("B"); break;
	case 7:printf("C"); break;
	case 6:printf("D"); break;
	default:printf("E");
		break;
	}
	return 0;
}
声明需要注意的地方:

    switch()表达式的类型与case后面的值必须是整型或可以转换为整型的值,具体如下:

    1.switch的值可以是常量,如switch(19);

    2.switch的值可以是常量表达式,如switch(19+2);

    3.switch的值可以是变量,如switch(a);

    4.switch的值可以是返回值是整型表达式,如switch(a=5+5);

     case的穿透是指:执行完每行代码后,并没有结束,而是直接向下执行其他的,所以必须加上break,有break则跳出,没有则接着执行。

case需要注意的地方:

      1.case的值可以是常量,如case(19);

    2.case的值可以是常量表达式,如case(19+2);

    3.default语句位置可以随便放;

    4.case的穿透同样可以适用于default;

    5.如果default语句放到switch语句最后,可以不加break,若是不放到最后,是必须要加上break的;

    6.case后面不能是实数型,如case 10.2;

    7.case语句之后默认的第一句话不能定义变量,如果要定义的话需要加上大括号。如:case 1:int s=10;printf(“%d”,s);这样是错误的,改正:case 1:{int s=10;printf(“%d”,s);}

思考:if语句与switch语句都是判断条件的,那该怎样选择使用呢?

    1.当分支较多的时候需要进行大量列举的时候用if;

     2.分支量不是太多,且用if代码量较多的时候可以用switch。


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

你可能感兴趣的:(C语言)