分支结构(c语言)

本文介绍了C语言中的条件控制结构,包括if语句的使用,如if...else...结构,多条语句控制,嵌套if以及解决悬空else的问题。同时,文章也讲解了switch语句的语法和应用,以及在不同情况下如何选择使用if和switch来实现分支结构。
摘要由CSDN通过智能技术生成
     C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。
   if、switch 实现分支结构
   for、while、do while 实现循环结构(下篇)

1. if 语句

(1)if

( if 的语法形式)

if(表达式)
  语句;

表达式成立(真),则执行下面语句,表达式不成立(假),则语句不执行。

在C语言中,0表示假,非0表示真,就是表达式的结果为0,语句不执行,表达式结果非0,语句执行。

例:输入一个整数,判断是否为奇数(是奇数打印是奇数,不是奇数不打印)

#include <stdio.h>
int main()
{
   int num = 0;
   scanf("%d", &num);

   if(num % 2 == 1)
       printf("%d 是奇数\n", num);

   return 0;
}

if 语句执行流程:表达式  -----为0------结束;表达式  -----非0------执行语句-----结束

(2)else

如果一个数不是奇数,那就是偶数,如果任给一个整数,要判断是奇数还是偶数?

可以用 if ... else... 语句

(if ... else ... 语法形式)

if(表达式)
  语句1;
else
  语句2;

例:判断一个整数是奇数还是偶数(奇数打印是奇数,不是奇数打印是偶数)

#include <stdio.h>
int main()
{
   int num = 0;
   scanf("%d", &num);

   if(num % 2 == 1)
       printf("%d 是奇数\n", num);
   else
       printf("%d 是偶数\n", num);
   return 0;
}

     练习:输入一个年龄,>= 18 输出:成年,否则输出:未成年

#include <stdio.h>
int main()
{
   int age = 0;
   scanf("%d", &age);

   if(age>=18)
       printf("成年\n");
   else
       printf("未成年\n");

   return 0;
}

   
(3)分支中可以包含多条语句   

if 和 else 语句中都默认只控制一条语句

如果想要 if 和 else 语句控制多条语句可以使用  {} 将需要控制的语句括起来

例:

if(表达式)
{
  语句1;
  语句2;
  ...
}
else
{
  语句1;
  语句2;
  ...
}

        

(4)嵌套if  

在 if ... else ... 语句中可以 嵌套 if ... else ... 语句

例:

if(表达式)
{
  if(表达式)
   语句1;
  else
   语句2;

}
else
{
   if(表达式)
    语句1;
   else
    语句2;

}
// if ... else ... 语句可以单独放在if语句里或者放在else语句里面也可以都放

(5)悬空else 问题

如果有多个 if 和 else ,要记住 else 永远和离他最近的那个 if 匹配

例:

#include <stdio.h>

int main()
{
   int a = 0;
   int b = 1;
   if(a == 1)
      if(b == 1)
         printf("b\n");
   else
      printf("a\n");

   return 0;
   

}

      这段代码中的 else 是和 if(b == 1) 匹配的

      这一段代码最后的运行结果是:什么也没有输出           

      不管代码的排版如何 else 永远和离他最近的 if 匹配   

      如果想要让 else 和 第一个 if 相匹配可以这样写

   

#include <stdio.h>

int main()
{
   int a = 0;
   int b = 1;
   if(a == 1)
     {
        if(b == 1)
         printf("b\n");
     }
   else
      printf("a\n");

   return 0;
   

}

     

只要带上适当的⼤括号,代码的逻辑就会更加的清晰,所以⼤家以后在写代码的时候要注意括号的使 ⽤,让代码的可读性更⾼。

          

2.switch

除了 if 语句外,C语言还提供了 switch 语句实现分支结构。

switch 语句是一种特殊形式的 if ... else ... 结构,用于判断条件有多个结果的情况。

它把多重的 if ... else ... 改成更易用、可读性更好的形式。

(1)switch  语句语法形式

switch(整型表达式)
{
   case 整型常量表达式1:
        语句1;
        break;
   case 整型常量表达式2:
        语句2;
        break;

     ...

   case 整型常量表达式n:
        语句n;
        break;
   default:
        语句n+1;
        break;
}

上面代码中,根据表达式不同的值,执行相应的 case 分支。

如果找不到对应的值,就执行 default 分支。

重点:

  switch 后的 表达式 必须是 整型表达式

  case 后的值,必须是 整型常量表达式

  case 和后边的数字之间必须有 空格

  每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个 switch 语句

例:输入一个 1 ~ 7 的数字,打印对应的星期几

#include <stdio.h>

int main()
{
   int day = 0;
   scanf("%d", &day);
   
   switch(day)
   {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期七\n");
        break;
    default:
        printf("输入错误\n");
        break;
   }
   
   return 0;
}

case 语句中的 break 也不是每句都得有,需要根据实际情况来看

例:输入1 ~ 5,输出 “工作日”;

       输入6 ~ 7,输出 “休息日”

#include <stdio.h>

int main()
{
   int day = 0;
   scanf("%d", &day);
   
   switch(day)
   {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("输入错误\n");
        break;
   }
   
   return 0;
}

上面这两个代码,说明我们应该根据实际的情况,在代码中觉得是否使用 break , 或者在哪里使用

 break ,才能正确的完成实际的需求。

(2)default

在使用 switch 语句的时候,我们可能经常遇到一种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这个时候就可以做一些处理,可以再 switch 语句中加入 default 字句。 也可以不做处理。

switch(整型表达式)
{
   case 整型常量表达式1:
        语句1;
        break;
   case 整型常量表达式2:
        语句2;
        break;

     ...

   case 整型常量表达式n:
        语句n;
        break;
   default:
        语句n+1;
        break;
}

switch 后面的表达式结果不符合 case 后面的整型常量表达式的时候就会执行 default 字句。

case 和 default 字句的顺序问题

在 switch 语句中 case 和 default 语句是没有顺序要求的,只要你的顺序满足实际需求就可以。

不过 我们通常是把 default 字句放在最后处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值