分支:通往选择的大门

        对于分支,大家是不是开始迷茫了呢,是不是就慌了呢?在讲这一部分知识点开始之前,我们先聊聊大学生放假回家的问题。每到放假的时候,咱们的出行方式是不是有很多,一部分人坐飞机,一部分人坐高铁,还有一部人采用地铁等等方式。而每个人对于出行方式的判断也是不同的,像那些家跟学校在一个地方的人,他坐地铁时间短且还便宜;对于做飞机的人来说,虽然贵,但是却能快速到家。而这些就好比今日即将要描述的分支一样,采用不同的方式。


分支

if分支

if语句

首先而言if语句的格式为:if(表达式)语句;

举下面一个代码:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  if(a==5)
  {
     printf("haha ");
  } 
  printf("hehe\n");
  return 0;
}

如果输入5,那么运行结果为“haha hehe”,如果输入的不是5,那么结果为“hehe”。

经过上面的代码,咱们可以看出if后面的括号中的语句可以为判断的语句,如果输入的值为5,那么括号里判断就为真,就会执行语句,输出haha,如果为假,就不会执行该语句。

而括号里的值也有很多形式,就比如“a=5”这种赋值,而这种赋值语句是一直为真的。可以看下面的代码:

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  if(a=5)
  {
     printf("haha ");
  } 
  printf("hehe");
  return 0;
}

不管你执行多少次,咱们最终输出的结果一直为 “haha hehe”。

补充:if执行的语句可以为一条语句,也可以为多条,但是这些多条语句需要用“{  }”括起来,看作是一条复合语句。如下

if(a>5)
printf("haha");
if(a>5)
{
printf("haha\n");
printf("hehe\n");
printf("xixi\n");
}

 

if else语句

简单的if语句可以让程序选择进行一条语句,或者就是跳过这条语句。但是像选择出行方式时,情况很多,我们需要判断,并选择。

if(a>3)
   printf("坐火车");
if(a<=3)
   printf("坐飞机");

这就需要进行判断两次。 

而if else就可以解决这种问题,代码如下:

if(a>3)
   printf("坐火车");
else
   printf("坐飞机");

在这个代码中,我们可以看到如果a>3不满足,则就直接执行else下的输出语句,并不需要判断两次。而在if else语句中,我们依然要遵循一种规则即为if和else之间包括else后的语句为一条语句或者是一条复合语句。

多重选择 else if

何为多重选择else if?他其实是为了扩展if else结构。小学数学课本上应该说过交电费的数学问题,例如,小区的缴电费规则如下:1、不到500KW,单价多少;2、超过500KW,但不超过800KW,单价多少;3、超过800KW,单价多少。而对于这种问题,并不是if else语句一种不满足另一种就满足的情况。所以,在这种情况下,咱们的多重else if就派上了用场。

#include<stdio.h>
int main()
{
   int a,b,c,d,sum;//a,b,c分别为不同的价位,d为户主用电量,sum为电费。
   scanf("%d %d %d",&a,&b,&c);
   if(d<=500)
       {
          sum=d*a;
          printf("%d",sum);
       }
   else if(d>500&&d<=800)
       {
          sum=d*b;
          printf("%d",sum);
       }
   else 
       {
           sum=d*c;
          printf("%d",sum);
       }
    printf("电费%d",sum);
   return 0;
}

也就是说咱们的程序是由if else组成,而else部分又包含了另一个if else。可以看为时下面的形式:

#include<stdio.h>
int main()
{
   int a,b,c,d,sum;//a,b,c分别为不同的价位,d为户主用电量,sum为电费。
   scanf("%d %d %d",&a,&b,&c);
   if(d<=500)
       {
          sum=d*a;
          printf("%d",sum);
       }
   else 
      {
          if(d>500&&d<=800)
            {
               sum=d*b;
               printf("%d",sum);
            }
          else 
            {
               sum=d*c;
               printf("%d",sum);
            }
      }
    printf("电费%d",sum);
   return 0;
}

而这两种方式是一样的效果,所以就考研将第二种的花括号去掉。而第二种,else大括号里面的if else语句就像与时if语句的嵌套。

if()
{
   if()    {   };

   else if()   {   };

        else 
           {
              if()    {   };
           }      
}

重点:

else需和他最近的if进行匹配,但前提是这个else和if必须是同级的。就好比,某某国王子和某某国公主是匹配的,某某国公爵和某某国公爵夫人是匹配的。

if(a>5)
   {
      if(a>7)
          {
            printf("haha\n");
          }
      else
          {
            printf("heihei\n");
          }   
   }
else 
    if(a<5)
         {
           printf("hehe\n");
         }   
    else
         if(a==5)
             {
                 printf("niubi\n");
             }

大家其实看出来这些if else都是有自己心仪的人,或者单身。实际操作时可以将代码的大括号写出来,方便阅读,或者是对齐,方便读解。

大家有没有明白一点呢,这if语句就像下面这张表情包样,一直在叫呢


switch分支

switch语句

在开始这一知识点之前呢,我们先看一段代码:

switch(a)
{
  case 1:printf("hh ");break;
  case 2:printf("xx ");break;
  default:printf("tt ");break;
}

通过这段代码相信大家应该可以看出来咱们switch的用法了,咱们在执行程序时主要看的是switch后面括号中的表达式的值,然后扫描case标签后的如这段代码中的1,然后执行相对应的语句。如果语句中有break则这里的switch选择结束,如果没有就会继续执行下面的case 2,但如果括号中的值跟case后面的值不搭,或者没有出现相同的,系统就会去看是否有default,如果有就执行,没有就退出switch。

switch(1)
{
  case 1:printf("hh ");break;
  case 2:printf("xx ");break;
  default:printf("tt ");break;
}

这段代码执行结果为hh

switch(1)
{
  case 1:printf("hh ");
  case 2:printf("xx ");break;
  default:printf("tt ");break;
}

而这一段的执行结果为hh xx

switch(4)
{
  case 1:printf("hh ");break;
  case 2:printf("xx ");break;
  default:printf("tt ");break;
}

这一点执行结果为tt

switch(5)
{
  case 1:printf("hh ");break;
  case 2:printf("xx ");break;
}

而这一段就没有执行结果

大家通过这上面的例子大概就能看出来switch的执行方式了吧。但是咱要补充一些知识:switch后面括号中的值应该为一个整数值,或者是char类型;而case 标签必须是整数类型或者是char类型的常量或者是整型常量表达式(即,表达式中只包含整型常量),case标签不能是变量。

case:多重标签

switch(a)
{
case 1:
case 2:printf("hh");break;
case 3:
case 4:printf("tt");break;
default:break;
}

在上面代码中a的值为1和2最终输出的结果为hh,a的值为3或4,输出的结果为tt

原因其实很简单,就是在switch语句提及的break,如果此时我们在case 1:后加一个break,那么要想输出hh只能让a的值为2。

两者比较

其实两者的差别很简单,如果是根据浮点类型的变量或者表达式来选择,就无法使用switch;如果变量在某范围内确定程序的走向,switch就会很简单。

总之具体情况具体分析。

怎么样,看完了这个知识点,我相信你应该会使用if分支和switch分支了吧,快像大熊学习给这些知识点比一个中指吧,那么就下次再见咯!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值