c语言自学教程——分支语句

102 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

引入

引入:什么是语句? C语句可分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

其中控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

1. 分支语句(选择结构)

1.1 if语句

格式:

#include <stdio.h>
int main()
{
     if(表达式)//若表达式为真,则输入语句列表1内容。反之输入语句列表2内容
     {
        语句1;
     }

     else(表达式)
     {
        语句2;  
     }
      return 0;
}

1.1.1 if语句中的else

else与最近的if配对(要注意编码格式,用好‘{}’把代码括起来),不能因为它跟谁缩进对齐就跟谁配对。

int main()
{
    int a = 0;
    int b = 2;
    if (1 == a)//=赋值 ==判断相等。建议将常数写在左边,好排查问题
        if (2 == b)
            printf("hehe\n");
    else
        printf("haha\n");
    //输出hehe
    //看似else与第一个if对应,实则它与最近的未匹配的语句进行匹配。有特殊需求就用好{}。
    return 0;
}

1.2 switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。

格式:

switch(整型表达式)
{
    语句项;
}

而语句项是什么呢 如下是一些case语句:

case 整形常量表达式:
  语句;

运用

int main()
{
    int day = 0;
    scanf("%d", &day);//将数据给到day的地址加以保存
    switch (day)//()里的day一定是整型
    {
    case 1://case 整型常量表达式
        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;
    }
    return 0;
}

1.2.1 switch语句中的break

整合上述代码

输入1-5输出的是“weekday”

输入6-7输出“weekend

#include <stdio.h>
int main()
{
      int day = 0;
      scanf("%d", &day);
      switch(day)
     {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      printf("weekday\n");
      break;
    case 6:
    case 7:
      printf("weekend\n");
      break;
     }
    return 0;
}

break语句的实际效果是把语句列表划分为不同的部分。

1.2.2 switch语句中的default子句

如果表达的值与所有的case标签的值都不匹配怎么办? 其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何一个case标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

分支语句是很简单的语句,也是很多程序的基础,我们一开始就穿插示例,是为了让大家不单单理解概念,还能学以致用,模仿着写出一些程序。